无法使用cordova在android上获得firebase oauth
Posted
技术标签:
【中文标题】无法使用cordova在android上获得firebase oauth【英文标题】:Can't get firebase oauth with cordova working on android 【发布时间】:2018-05-29 21:34:25 【问题描述】:我正在尝试使用 google 和 facebook 将 Firebase oauth 添加到我的项目中。
我添加到项目中的插件:
cordova-plugin-browsertab 0.2.0 "cordova-plugin-browsertab" cordova-plugin-buildinfo 2.0.1 “BuildInfo” cordova-plugin-compat 1.2.0“兼容” cordova-plugin-inappbrowser 1.7.2“InAppBrowser” cordova-plugin-whitelist 1.3.3“白名单” cordova-universal-links-plugin 1.2.1“通用链接插件”我现在使用 android 6.2.3 作为我的平台,我正在考虑以后添加 ios。
我的问题是,对于使用 firebase 服务的每个登录请求,我都会收到 auth/redirect-cancelled-by-user 作为响应。
我已按照官方教程中的说明进行操作。我添加了:
<universal-links>
<host name="URL" scheme="https" />
<host name="package name" scheme="https">
<path url="/__/auth/callback" />
</host>
</universal-links>
进入我的 config.xml 文件。
【问题讨论】:
确保将authDomain
替换为package_name
。还要确保您的 FDL 域也添加到 universal-links
。如果您碰巧使用自定义 authDomain
,请确保使用该 .firebaseapp.com
而不是 .firebaseapp.com
。
我已经检查过了,我没有使用自定义 AuthDomain。
你的链接拦截明显有问题。尝试查看是否收到传入链接:universalLinks.subscribe(null, function(event) console.log(event.url););
我已经试过了,没有日志,我不知道我是否把它放在正确的地方。我正在 onDeviceReady 的 index.js 中订阅
如果没有记录任何内容,那么您的重定向设置有问题。无法根据可用信息判断哪个部分。尝试使用该插件进行基本的网络到移动重定向。
【参考方案1】:
您好,我花了 5 个小时来解决这个问题。我正在使用 PhoneGap 构建。问题是 Universal-links 标签未复制到 AndroidManifest.xml。所以解决方案是
-
安装cordova-universal-links-plugin-fix
如果您想在config.xml 中保留universal-links 标签,请保留它。但也将其添加到 config.xml
在顶部添加小部件标签
xmlns:android="http://schemas.android.com/apk/res/android"
添加以下代码config.xml中的任何地方我更喜欢在插件之前或在unvirsal-links标签旁边
<config-file target="AndroidManifest.xml" parent="/manifest/application/activity">
<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="****-***.firebaseapp.com" android:pathPrefix="/__/auth/callback" android:scheme="https" />
</intent-filter>
</config-file>
现在,当使用 phonegapbuild 或本地 cordova CLI 构建应用程序时,它会复制应该在清单文件中的通用链接数据。当应用程序运行并调用 firebase.auth().getRedirectResult() 时,它不会给出类似
的任何错误授权/被用户取消。用户在完成之前取消了重定向
用户使用 cordova CLI 构建应用程序,请在运行 cordova build android 后确保清单文件中的活动标记下有上述意图过滤器标记。
【讨论】:
以上是关于无法使用cordova在android上获得firebase oauth的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 android 上的 cordova socialsharing 插件在 facebook 上共享自定义文本
再次删除并添加平台后,Cordova 无法在 Android 上运行