OAuth с facebook / gmail не работает на симуляторе iOS (приложение Cordova + Firebase) - PullRequest
2 голосов
/ 14 октября 2019

Я пытаюсь завершить свою последнюю работу в мобильном приложении Cordova (+ Firebase) и застрял с проблемой. Итак, я работал над социальным входом в приложение cordova, я следовал этому руководству - Ссылка на руководство

, когда я закончил, у меня были некоторые проблемы, но я их исправил (только наandroid)

на iOS, когда вы нажимаете на какую-нибудь кнопку входа в систему - ничего не происходит, НО, когда я скрываю приложение (или просто закрываю его) и снова открываю, оно начинает делать перенаправление.

В этом редиректе я делаю логин через facebook / gmail, а затем он перенаправляет меня по ссылке, которая есть в моем config.xml

, вот мой запрос:

 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

1 Ответ

0 голосов
/ 22 октября 2019

Уже исправлено, выполнив следующие действия:

  1. На социальной кнопке iOS даже не было перенаправления соответствующему провайдеру из-за какой-то ошибки, которая останавливала весь стек: найден ответ здесь - fixedBugLink
  2. После того, как я исправил эту ошибку, я столкнулся с тем, что после успешного входа в систему я не смог вернуться в приложение

Так что я обнаружил, что проблема заключалась внеуместное добавление следующего плагина - 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, изменив значение по умолчанию на REVERSED_CLIENT_ID из файла GoogleService-Info.plist в моем приложении iOS.

Итакбудьте осторожны со следующими руководствами (кстати, я следовал этому - oauth-cordva-firebase

Надеюсь, это кому-то тоже поможет:)

...