[补充]
根据我的观察,我认为问题要么是与一个坏的服务器客户端ID有关,要么是需要额外的编程,而这些编程不是开箱即用的(例如应用程序引擎模块或服务器)。
[原始内容]
我已经成功地运行了Google Sign-In Android示例应用。 我遇到的问题涉及2个活动...ServerAuthCodeActivity和IdTokenActivity。
我按照创建google-services.json
文件并将其放在正确位置的流程进行了操作。当我运行应用程序时,我能够成功使用提供的4个活动中的2个...
- 登录活动:基本登录
- 带驱动器的登录活动:基本登录加上驱动器身份验证
- ID令牌活动:检索已登录用户的ID令牌
- 服务器身份验证代码活动:从已验证的服务器检索身份验证代码。
前两个示例非常好用; 但是,最后两个活动只给我一个 null
结果。
在运行应用程序之前,我注意到需要在strings.xml
中提供一个server_client_id
。 我发现google-services.json
有一个OAuth客户端ID与要求匹配(以apps.googleusercontent.com
结尾),并将该客户端ID放入strings.xml
文件中。注意:我尝试在Google开发人员控制台
中创建一个Android OAuth客户端ID,但是它说我已经有了该项目/包的OAuth客户端ID。因此,我认为google-services.json
文件的客户端ID是正确的。
那么,这是正确的服务器客户端ID吗?还是我应该从其他地方获取该ID?
编辑
这是我的google-services.json
文件(压缩)
{
"project_info": {
...
},
"client": [
{
"client_info": {
...
},
"oauth_client": [
{
"client_id": "*****.apps.googleusercontent.com", // HERE
...
}
],
...
}
],
...
}
登录后的身份验证代码结果如下图所示:
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
导致result.isSuccess()
为 false。因此,似乎认证失败了...而不是认证令牌不可用。 - Christopher Rucinskiresult.isSuccess()
等于false
。 - Christopher Rucinski