【问题标题】:React native app using .setAcceptThirdPartyCookies使用 .setAcceptThirdPartyCookies 反应原生应用程序
【发布时间】:2016-07-22 22:56:35
【问题描述】:
我在 Webview 下的登录效果很好,但第二页没有从 Facebook SDK 恢复 response.status === 'connected'。
我在这里找到了解决方案Checking Facebook login state in a webView always returns unknown,但我的应用程序不是安卓原生的。
在 react 本机应用程序中,我可以在哪里或如何验证以下内容:
If (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{CookieManager.getInstance().setAcceptThirdPartyCookies(mainWebView, true); }
【问题讨论】:
标签:
android
cookies
reactjs
webview
native
【解决方案1】:
我知道这来晚了,但如果其他人在 android 上的 webview 中遇到 cookie 问题,我认为这会有所帮助。
为了让您在 webview 中启用第三方 cookie,您需要修改一些 java 代码。
因此,您实际上需要 build react native from source 并修改 react-native/ReactAndroid/src/main/java/com/facebook/react/views/webview/ReactWebViewManager.java 文件并添加您提到的创建 webview 的行(或者可能公开一个启用第三方 cookie 的 react webview 属性)。
在我的例子中,我在 webview 初始化之后在createViewInstance 方法中添加了它,上面的行启用了 webview 的调试:
if (ReactBuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
我的代码现在看起来像这样:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
}
if (ReactBuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}