带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)
Posted
技术标签:
【中文标题】带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)【英文标题】:OAuth with facebook/gmail is not working on iOS simulator (Cordova app + Firebase) 【发布时间】:2019-10-14 14:32:38 【问题描述】:我正在尝试在 cordova (+Firebase) 移动应用上完成我的最后一件事,但遇到了一个问题。 所以,我正在为科尔多瓦应用程序进行社交登录, 我正在关注本指南 - Link to guide
完成后,我遇到了一些问题,但已修复(仅在 android 上)
在 ios 上,当您单击某些登录按钮时 - 没有任何反应, 但是,当我隐藏应用程序(或只是关闭它)并再次打开它时,它开始进行重定向。
在该重定向中,我使用 facebook/gmail 登录,然后将我重定向到我在 config.xml 中的链接
这是我的要求:
await firebase.auth().signInWithRedirect(provider);
const user = await firebase.auth().getRedirectResult();
,在安卓上可以正常使用
这是我的 config.xml (我已经尝试了很多stuckoverflow和github解决方案,所以它看起来很乱
<?xml version='0.0.1.2' encoding='utf-8'?>
<widget id="com.appname.ios" version="0.0.1.2" xmlns="http://www.w3.org/ns/widgets">
<name>App name</name>
<description>
Some description...
</description>
<author email="example@gmail.com" href="https://appname.com">
App ame
</author>
<content src="index.html" />
<icon src="/public/favicon.ico" />
<universal-links>
<host name="appname.page.link" scheme="https" />
<host name="appname.com" scheme="https">
<path url="/__/auth/callback"/>
</host>
</universal-links>
<plugin name="cordova-plugin-whitelist" spec="1" />
<plugin name="cordova.plugins.diagnostic" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<allow-navigation href="*"/>
<platform name="android">
<allow-intent href="market:*" />
</platform>
<preference name="AndroidLaunchMode" value="singleTask" />
<preference name="orientation" value="portrait" />
<preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" />
<platform name="ios">
<icon src="public/ios/60.png" />
<icon src="public/ios/60.png" />
<icon src="public/ios/76.png" />
<icon src="public/ios/40.png" />
<icon src="public/ios/57.png" />
<icon src="public/ios/72.png" />
<icon src="public/ios/167.png" />
<icon src="public/ios/29.png" />
<icon src="public/ios/50.png" />
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<splash src="public/ios/appname.png" />
<splash src="public/ios/appname.png" />
<splash src="public/ios/appname.png" />
<splash src="public/ios/appname.png" />
<splash src="public/ios/appname.png" />
<splash src="public/ios/appname.png" />
<splash src="public/ios/appname.png" />
<splash src="public/ios/appname.png" />
<splash src="public/ios/appname.png" />
</platform>
</widget>
这是我成功登录时的屏幕截图: ios simulator screenshot
【问题讨论】:
【参考方案1】:已经通过接下来的事情解决了:
-
在 iOS 上,社交按钮甚至没有重定向到适当的提供程序,因为某些错误会停止整个堆栈:
在这里找到答案 - fixedBugLink
修复该错误后,接下来我要处理的是成功登录后无法返回应用程序
所以我发现问题在于不恰当地添加了下一个插件 - https://www.google.com/search?q=cordova+url+scheme+ios&oq=cordova+url+scheme+ios&aqs=chrome..69i57j0j69i60.2808j0j4&sourceid=chrome&ie=UTF-8
我修复了错误 URL 方案链接的问题,将默认链接更改为 来自我 iOS 应用中 GoogleService-Info.plist 文件的 REVERSED_CLIENT_ID。
所以请注意以下指南(顺便说一句,我已经遵循了这一指南 - oauth-cordva-firebase
希望这对某人也有帮助:)
【讨论】:
我在该教程中也遇到了很多问题,但是(其中一个)对我有帮助的解决方案是不要将 URL_SCHEME=com.firebase.cordova 用于 cordova-plugin-customurlscheme,而是改为使用我的捆绑包 ID。这似乎修复了很多错误,尽管我很想用你的 REVERSED_CLIENT_ID 建议重试它。更改后身份验证过程无法运行,因此我将坚持使用我的捆绑 ID。以上是关于带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)的主要内容,如果未能解决你的问题,请参考以下文章
我应该使用哪个 Java 库通过 Facebook、Gmail、本地身份验证等进行身份验证?
如何从 MSN、Twitter、Facebook、GMail 等中检索联系人/电子邮件?
如何在 Laravel 5.1 中使用 Github、Facebook、Gmail 和 Twitter 登录?