我试图通过Facebook和Twitter登录我的用户,验证过程在API中,所以我显示了facebook(或twitter)登录页面,当用户登录whit凭据时,API返回令牌。
问题是当我尝试在Android中测试时,不要重定向到主视图。我正在阅读并说可能是我如何注入javascript代码,但似乎没有任何效果。
然后认为可能是AndroidManifest中的uri方案,问题是回调网址是这样的:
但是在计划中我有这样的事情:
<data android:host="www.ciudad-facil.perceptum.cl"
android:pathPrefix="/callback/facebook"
android:scheme="http" />
但是不起作用,这是我用来向用户显示页面的代码:
_onMessage = ( event ) => {
console.log('entro');
var response = event.nativeEvent.data;
if (response != '') {
response = JSON.parse(response);
console.log(response);
try {
AsyncStorage.setItem('auth_token', response.token);
AsyncStorage.setItem('created_user', (response.created).toString());
global.auth_token = response.token;
} catch (error) {
console.log('AsyncStorage error: ' + error.message);
}
Actions.Main();
}
}
render() {
var jsCode = "window.postMessage(document.getElementsByTagName('PRE')[0].innerHTML)";
return (
<WebView
source={{ uri: this.state.authUrl }}
onMessage={this._onMessage}
injectedJavaScript={jsCode}
startInLoadingState={true}
/>
);
}
PD:在iOS中,这非常有效。问题只是Android
答案 0 :(得分:1)
这适用于每个人,通过相同的。解决方案是:
首先,在AndroidManifest
上设置方案,例如:
<data android:host="www.xxxxx.com"/>
然后,当您使用Android时,注入JS代码的形式是:
window.__REACT_WEB_VIEW_BRIDGE.postMessage(....)
所以是的,这就是解决方案。