作者:壮壮由之妈_245 | 来源:互联网 | 2022-11-30 15:50
我正在尝试集成Ionic Google Plus原生插件,以允许用户使用Google登录通过手机登录我的应用.这只是这个Cordova/PhoneGap库的包装.
我想我一直都在那里.我的登录屏幕上有一个按钮,当我在Android手机上点击它时,我遇到了预期的"选择一个帐户"屏幕.但是,当我真正点击我的一个帐户并查看Chrome开发工具中发生的事情(通过远程调试)时,我发现出现了一个错误,用一个无用的堆栈跟踪表示为12500.
似乎有少数明星需要协调才能使其发挥作用,而且我不清楚如何在开发和生产模式下同时使用它.这是我检查的内容:
在Google API&Services中=>凭据信息中心
我有两个适用于Android的OAuth 2.0客户端ID,一个用于开发,一个用于生产.
这两个配置都使用相同的Package名称,这是Android清单文件中的完全限定名称,名称以"com.blah.blah.blah"开头,它也是config.xml文件中的widget ID
每个配置都使用不同的签名证书指纹,我使用keytool建立.
对于Production,我从用于签署应用程序进行生产的密钥库文件生成SHA1指纹.
对于开发,我通过提取由离子cordova运行android生成的调试APK,并在包含的META-INF/CERT.RSA文件上运行keytool来生成SHA1指纹.
在Ionic项目的config.xml文件中
我有一个看起来像这样的部分:
我一直在生产或开发独特的客户端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的所有选项(即传递一个空对象,{})我没有收到错误,但是这个.googlePlus.login,我找回了一个用户对象作为回应.但是,我没有回复(至少在Android上)一个idtoken(我可以传递给我的服务器端代码).所以我的对象看起来像这样:
{
accessToken: "XXXXXXXXXXX"
displayName: "XXXXXXXXXXX"
email: "XXXXXXXXXXX"
expires: XXXXXXXXXXX
expires_in: XXXXXXXXXXX
familyName: "XXXXXXXXXXX"
givenName: "XXXXXXXXXXX"
userId: "XXXXXXXXXXXX"
}
任何想法如何在回调对象中获得idtoken?