facebook/gmail 的 OAuth 无法在 iOS 模拟器(Cordova 应用程序 + Firebase)上运行
OAuth with facebook/gmail is not working on iOS simulator (Cordova app + Firebase)
我试图在 cordova (+Firebase) 移动应用程序上完成我的最后一件事,但遇到了一个问题。
所以,我正在为 cordova 应用程序进行社交登录,
我正在按照本指南 - Link to guide
完成后,我遇到了一些问题,但已解决(仅在 android 上)
在 iOS,当您点击某些登录按钮时 - 没有任何反应,
但是,当我隐藏应用程序(或只是关闭它)并再次打开它时,它开始进行重定向。
在该重定向中,我使用 facebook/gmail 进行登录,然后它将我重定向到我的 config.xml
中的 link
这是我的要求:
await firebase.auth().signInWithRedirect(provider);
const user = await firebase.auth().getRedirectResult();
,在 android
上运行正常
这是我的 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" width="180" height="180" />
<icon src="public/ios/60.png" width="60" height="60" />
<icon src="public/ios/76.png" width="76" height="76" />
<icon src="public/ios/40.png" width="40" height="40" />
<icon src="public/ios/57.png" width="57" height="57" />
<icon src="public/ios/72.png" width="72" height="72" />
<icon src="public/ios/167.png" width="167" height="167" />
<icon src="public/ios/29.png" width="29" height="29" />
<icon src="public/ios/50.png" width="50" height="50" />
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<splash src="public/ios/appname.png" width="320" height="480"/>
<splash src="public/ios/appname.png" width="640" height="960"/>
<splash src="public/ios/appname.png" width="768" height="1024"/>
<splash src="public/ios/appname.png" width="1536" height="2048"/>
<splash src="public/ios/appname.png" width="1024" height="768"/>
<splash src="public/ios/appname.png" width="2048" height="1536"/>
<splash src="public/ios/appname.png" width="640" height="1136"/>
<splash src="public/ios/appname.png" width="750" height="1334"/>
<splash src="public/ios/appname.png" width="1242" height="2208"/>
</platform>
</widget>
这是我成功登录后的屏幕截图:
ios simulator screenshot
已通过执行后续操作修复:
- 在 iOS 社交按钮甚至没有重定向到适当的提供者,因为一些错误导致整个堆栈停止:
在这里找到答案 -
- 修复该错误后,接下来我要处理的是成功登录后无法return返回应用程序
所以我发现问题出在不合适添加下一个插件 -
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 方案 link 来解决问题
REVERSED_CLIENT_ID 来自我的 iOS 应用中的 GoogleService-Info.plist 文件。
所以请小心遵循指南(顺便说一句,我已经遵循了这个 - oauth-cordva-firebase
希望这对其他人也有帮助:)
我试图在 cordova (+Firebase) 移动应用程序上完成我的最后一件事,但遇到了一个问题。 所以,我正在为 cordova 应用程序进行社交登录, 我正在按照本指南 - Link to guide
完成后,我遇到了一些问题,但已解决(仅在 android 上)
在 iOS,当您点击某些登录按钮时 - 没有任何反应, 但是,当我隐藏应用程序(或只是关闭它)并再次打开它时,它开始进行重定向。
在该重定向中,我使用 facebook/gmail 进行登录,然后它将我重定向到我的 config.xml
中的 link这是我的要求:
await firebase.auth().signInWithRedirect(provider);
const user = await firebase.auth().getRedirectResult();
,在 android
上运行正常这是我的 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" width="180" height="180" />
<icon src="public/ios/60.png" width="60" height="60" />
<icon src="public/ios/76.png" width="76" height="76" />
<icon src="public/ios/40.png" width="40" height="40" />
<icon src="public/ios/57.png" width="57" height="57" />
<icon src="public/ios/72.png" width="72" height="72" />
<icon src="public/ios/167.png" width="167" height="167" />
<icon src="public/ios/29.png" width="29" height="29" />
<icon src="public/ios/50.png" width="50" height="50" />
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<splash src="public/ios/appname.png" width="320" height="480"/>
<splash src="public/ios/appname.png" width="640" height="960"/>
<splash src="public/ios/appname.png" width="768" height="1024"/>
<splash src="public/ios/appname.png" width="1536" height="2048"/>
<splash src="public/ios/appname.png" width="1024" height="768"/>
<splash src="public/ios/appname.png" width="2048" height="1536"/>
<splash src="public/ios/appname.png" width="640" height="1136"/>
<splash src="public/ios/appname.png" width="750" height="1334"/>
<splash src="public/ios/appname.png" width="1242" height="2208"/>
</platform>
</widget>
这是我成功登录后的屏幕截图: ios simulator screenshot
已通过执行后续操作修复:
- 在 iOS 社交按钮甚至没有重定向到适当的提供者,因为一些错误导致整个堆栈停止:
在这里找到答案 -
- 修复该错误后,接下来我要处理的是成功登录后无法return返回应用程序
所以我发现问题出在不合适添加下一个插件 - 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 方案 link 来解决问题 REVERSED_CLIENT_ID 来自我的 iOS 应用中的 GoogleService-Info.plist 文件。
所以请小心遵循指南(顺便说一句,我已经遵循了这个 - oauth-cordva-firebase
希望这对其他人也有帮助:)