Cordova firebase google auth

问题描述 投票:0回答:2

我正在尝试在cordova(phonegap)应用中实施Google Auth。

https://firebase.google.com/docs/auth/web/cordova?hl=en-419

  • 我在firebase xxxx.firebaseapp.com中创建了一个auth域
  • 我的应用程序聚合到firebase(在Aws中使用firebase进行分析)在同一个应用程序中。
  • 我启用了Firebase动态链接,我可以查看我的域名xxxx.page.link
  • 我启用了谷歌签名方法。
  • 我已经安装了所有必需的插件
  • 在我的config.xml中: <universal-links> <host name="xxxx.page.link" scheme="https" /> <host name="xxxx.firebaseapp.com" scheme="https"> <path url="/__/auth/callback"/> </host> </universal-links> <preference name="AndroidLaunchMode" value="singleTask" />

我的登录方式:

var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithRedirect(provider).then(function() {
                console.log("hola");
                return firebase.auth().getRedirectResult();
}).then(function(result) {
                // This gives you a Google Access Token.
                // You can use it to access the Google API.
                var token = result.credential.accessToken;
                // The signed-in user info.
                var user = result.user;
                afterLoginGoogle(user);
}).catch(function(error) {
                // Handle Errors here.
                var errorCode = error.code;
                var errorMessage = error.message;
                console.log("error1 "+ errorMessage);   //Error log!!!!

            });
});

当我执行登录方法时,会启动一个新的Chrome标签页,然后我会输入我的Google用户名和密码。然后,选项卡关闭,应用程序再次显示,但我总是在我的控制台中出现错误:“error1重定向操作已在最终确定之前被用户取消。”

我第一次收到此错误时,我在应用程序加载时将此代码放入:

firebase.auth().getRedirectResult().then(function(result) {
        if (result.credential) {
        // This gives you a Google Access Token.
        // You can use it to access the Google API.
        var token = result.credential.accessToken;
        // The signed-in user info.
        var user = result.user;
        // ...
        console.log("Despues");
        afterLoginGoogle(user);
        }
    }).catch(function(error) {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        console.log("Despues"+errorMessage);
    });

我已经尝试捕获所有动态链接事件,进行测试,但没有收到任何事件:

universalLinks.subscribe(null, function(eventData) {
            alert('Did launch application from the link: ' + eventData.url);
});

但它永远不会运行:(

任何人都可以帮助我。我对这种情况很累。

android cordova firebase oauth
2个回答
3
投票

我将回答我自己的问题,因为它对其他人有用。

第一次,如果你按照指南qazxsw poi,它的工作原理。但...

Cordova通用链接插件有一个问题,最新的cordova版本,尚未解决:https://firebase.google.com/docs/auth/web/cordova?hl=en-419

你可以手动修复插件:在这个文件中:./ plugin / cordord-universal-links-plugin/hooks/lib/android/manifestWriter.js在第21行更改:

https://github.com/nordnet/cordova-universal-links-plugin/issues/133

至:

var pathToManifest = path.join(cordovaContext.opts.projectRoot, 'platforms', 'android', 'AndroidManifest.xml');

而且,如果您遇到通用链接问题,请查看清单生成的文件:platforms / android / app / src / main / AndroidManifest.xml

var pathToManifest = path.join(
    cordovaContext.opts.projectRoot,
    'platforms',
    'android',
    'app',
    'src',
    'main',
    'AndroidManifest.xml');

并检查这个配置是否与config.xml相同。你不能改变清单文件!这只是为了检查它。如果没有,请检查config.xml中是否有多个关于通用链接的注释。


0
投票

有人在重定向后成功验证了用户身份吗?我从DL事件监听器和Firebbase错误中得不到任何回复:<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="XXXXXXX.page.link" android:scheme="https"/> </intent-filter> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="XXXXXXXXX.firebaseapp.com" android:scheme="https" android:path="/__/auth/callback"/> </intent-filter>

© www.soinside.com 2019 - 2024. All rights reserved.