我正在尝试为React Native中具有webview的网站构建iOs移动应用程序。
我正在expo-cli项目中使用库('react-native-webview'
)。到目前为止,一切似乎都很好。也许是因为我是Webview的新手,但我无法找出一些问题。我正在工作的网站具有“使用FB登录”和“使用Google登录”选项,它们在Safari或其他网络浏览器上都能正常工作。
对于Facebook登录,网站在Facebook上打开一个新标签,当用户登录到新标签时,它关闭该标签并返回网站的登录页面,然后完美登录。但是在Web视图中,它没有打开用于FB登录的新标签,这就是为什么(我认为)它无法使用Facebook登录到该网站的原因。它只会返回Web视图中网站的登录页面,但不会像没有任何作用那样登录。
对于Google登录,与FB登录的概念相同。但是在Google登录中,它显示“错误403:disallowed_useragent”,我认为我必须为webview指定userAgent或applicationNameForUserAgent,但我不知道该怎么做。尤其是在expo-cli应用中。
我在网上搜索了好几天,却找不到解决我问题的方法。似乎有一些简单的解决方法。但正如我所说,我是新手。任何帮助,将不胜感激。任何解释会让我感激不尽。 :)
答案 0 :(得分:1)
<WebView
source={{ uri : initurl}}
userAgent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko"
originWhitelist={["https://*", "http://*", "file://*", "sms://*"]}
/>
此代码对我有用
答案 1 :(得分:0)
您必须通过onMessage和postMessage将WebView连接到Expo,并让Expo处理您的身份验证(以本机方法),然后将凭据回发到网页
对于iOS::使用自定义的Expo客户端。如果您使用标准的Expo客户端,则无法将Facebook登录与Firebase集成
我在这里写了一些说明:https://medium.com/@chwrtokuma/expo-webview-facebook-authentication-with-firebase-2b864c031340
如果您仅使用Facebook身份验证而不与Firebase集成,则只需将Facebook登录数据发布到您的网页即可。
答案 2 :(得分:0)
您可以使用以下链接来进行社交登录,而不是react-native-webview。
对于Google登录-https://docs.expo.io/versions/v38.0.0/sdk/google/
对于Facebook登录-https://docs.expo.io/versions/v38.0.0/sdk/facebook/
对于基于Web浏览器的身份验证-https://docs.expo.io/versions/latest/sdk/auth-session/