gpt4 book ai didi

android - Cordova 火力地堡谷歌认证

转载 作者:搜寻专家 更新时间:2023-11-01 07:42:55 24 4
gpt4 key购买 nike

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

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

  • 我在 firebase xxxx.firebaseapp.com 中创建了一个授权域
  • 我的应用在同一个应用中聚合到 firebase(我正在使用 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);
});

我 try catch 所有动态链接事件进行测试,但没有收到任何事件:

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

但它永远不会运行:(

谁能帮帮我。我对这种情况感到筋疲力尽。

最佳答案

我将发布我自己问题的答案,因为它可能对其他人有用。

第一次,如果yoy按照指南https://firebase.google.com/docs/auth/web/cordova?hl=en-419 , 有用。但是……

Cordova 通用链接插件在最新的 cordova 版本中存在问题,尚未解决:https://github.com/nordnet/cordova-universal-links-plugin/issues/133

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

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

到:

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

而且,如果您在使用通用链接时遇到问题,请查看 list 结果文件:platforms/android/app/src/main/AndroidManifest.xml

  <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>

并检查此配置是否与您的 config.xml 等效。您不得更改 list 文件!!!它只是为了检查它。如果没有,请检查您是否在 config.xml 中有多个关于通用链接的注释。

关于android - Cordova 火力地堡谷歌认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com