android - 离子 3 谷歌登录
问题描述
我正在尝试集成 The Ionic Google Plus Native Plugin 以允许用户使用 Google Login 从他们的手机登录我的应用程序。这只是这个 Cordova/PhoneGap 库的包装。
我想我几乎一路走来。我的登录屏幕上有一个按钮,当我在 Android 手机上单击它时,我遇到了预期的“选择帐户”屏幕。但是,当我真正点击我的一个帐户并查看 Chrome 开发工具中发生的事情(通过远程调试)时,我看到一个错误结果,神秘地表示为12500,并带有一个无用的堆栈跟踪。
似乎需要少数几颗星才能让它工作,而且我不完全清楚如何让它在开发和生产模式下同时工作。这是我检查过的内容:
- 在 Google API 和服务 => 凭据仪表板中
- 我有两个用于 Android 的 OAuth 2.0 客户端 ID,一个用于开发,一个用于生产。
- 这两个都配置了相同的包名,这是Android清单文件中的完全限定名,以“com.blah.blah.blah”开头,这也是config.xml文件中的小部件ID
- 其中每一个都配置了不同的签名证书指纹,我使用 keytool 建立了该指纹。
- 对于生产,我从用于签署生产应用程序的密钥库文件生成 SHA1 指纹。
- 对于开发,我通过提取由 ionic cordova run android 生成的调试 APK 并在包含的 META-INF/CERT.RSA 文件上运行 keytool 来生成 SHA1 指纹。
- 在 Ionic 项目的 config.xml 文件中
- 我有一个看起来像这样的部分:
<plugin name="cordova-plugin-googleplus" spec="^5.3.2">
<variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.ABCDEFG-12345" />
<variable name="WEB_APPLICATION_CLIENT_ID" value="ABCDEFG-12345.apps.googleusercontent.com" />
<variable name="PLAY_SERVICES_VERSION" value="11.8.0" />
</plugin>
我一直在替代生产或开发唯一客户端 ID 部分上方的 ABCDEFG-12345,除了可能作为自定义构建步骤之外,我看不到同时支持两者的明确方法。
- 在带有我的登录按钮的页面的 Typescript 中,现在,我只是这样做:
import { GooglePlus } from '@ionic-native/google-plus
...
constructor(public googlePlus: GooglePlus){}
...
login() {
this.googlePlus.login({
webClientId: 'ABCDEFG-12345.apps.googleusercontent.com',
offline: false
})
.then(res => console.log(res))
.catch(err => console.error(err));
}
- 再次在这里,将 ABCDEFG-12345 替换为生产或开发唯一客户端 ID 部分的上方,我看不到同时支持两者的明确方法,除非作为自定义构建步骤。
当我点击按钮时,我只是在开发模式下收到 12500 错误。我还没有尝试过生产模式。我到底错过了什么,我该如何追根究底?
此处github 存储库中的交叉发布问题。
更新:2018 年 11 月 7 日 省略调用 this.googlePlus.login 的所有选项(即传递一个空对象,{})我没有收到错误,但是 this.googlePlus.login,我得到了一个用户对象作为回应。但是,我没有取回(至少在 Android 上)一个 idtoken(我可以将其传递给我的服务器端代码)。所以我的对象看起来像这样:
{
accessToken: "XXXXXXXXXXX"
displayName: "XXXXXXXXXXX"
email: "XXXXXXXXXXX"
expires: XXXXXXXXXXX
expires_in: XXXXXXXXXXX
familyName: "XXXXXXXXXXX"
givenName: "XXXXXXXXXXX"
userId: "XXXXXXXXXXXX"
}
任何想法如何在回调对象中获取 idtoken?
解决方案
推荐阅读
- pine-script - 无法在我的策略中弹出 TradingView 警报
- javascript - svg 将文本大纲合并为一个完整的大纲
- button - 将继续购物按钮添加到 woocommerce 购物车页面,更新购物车左侧
- c++ - 由于我在某些时候使标志易变,因此标志的值应该改变。但它只在 t 线程上无限等待
- html - 图像的 Ruby 样式无法正确调整图片大小
- ada - 我如何总结 3 个最高的浮点数,而不是 txt 文件中的所有浮点数?
- jenkins - 如何将 jenkins.currentBuild.result 显示为“SUCCESS”而不是“null”
- datatables - 结合列数据和其他表数据的服务器端数据表
- excel - 谷歌应用脚本打开受密码保护的 Excel?
- typescript - 在运行命令时,如何为每种可能的颜色(其中 16 + 百万)获得一组图像以显示一个?