首页 > 解决方案 > 离子 3 谷歌登录

问题描述

我正在尝试集成 The Ionic Google Plus Native Plugin 以允许用户使用 Google Login 从他们的手机登录我的应用程序。这只是这个 Cordova/PhoneGap 库的包装。

我想我几乎一路走来。我的登录屏幕上有一个按钮,当我在 Android 手机上单击它时,我遇到了预期的“选择帐户”屏幕。但是,当我真正点击我的一个帐户并查看 Chrome 开发工具中发生的事情(通过远程调试)时,我看到一个错误结果,神秘地表示为12500,并带有一个无用的堆栈跟踪。

似乎需要少数几颗星才能让它工作,而且我不完全清楚如何让它在开发和生产模式下同时工作。这是我检查过的内容:

<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>
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));
}

当我点击按钮时,我只是在开发模式下收到 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?

标签: androidionic3google-signin

解决方案


推荐阅读