我正在使用以下代码行进行G +登录android集成。
在app build.gradle中:
compile 'com.google.android.gms:play-services-auth:8.4.0'
compile 'com.google.android.gms:play-services-plus:8.4.0'
在MainActivity中:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.com")
.requestProfile()
.build();
AppCompatActivity appCompatActivity = (AppCompatActivity) context;
googleApiClient = new GoogleApiClient.Builder(context)
.enableAutoManage(appCompatActivity, this)
.addConnectionCallbacks(this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addApi(Plus.API)
.build();
我还添加了" google-services.gson"应用程序级别的文件。 我还创建了web应用程序并使用clientIid来获取requestIdToken()参数。
requestIdToken(webapp的client-id)。
编写此代码后,我仍然在响应中获取状态代码= 12501,而tokenId = null。
我也读过this link。但找不到任何解决方案。
答案 0 :(得分:11)
您需要在client_id
文件中添加已签名和调试google-services.json
的凭据,如下所示:
"oauth_client": [
{
"client_id": "<your-client-id>",
"client_type": 1,
"android_info": {
"package_name": "<your-package-name>",
"certificate_hash": "<hash>"
}
},
{
"client_id": "<your-client-id-2>",
"client_type": 1,
"android_info": {
"package_name": "<your-package-name-2>",
"certificate_hash": "<hash-2>"
}
}
]
答案 1 :(得分:0)
这可能是由于Sha-1和Sha-256发行以及调试密钥不匹配所致。
将所有三个键(调试:Sha-1,发行版:Sha-1和Sha-256)添加到Firebase控制台,然后重新下载json并替换。
对我来说很好。
有时OAuth 2.0客户端ID(Web应用程序密钥)可能不匹配
答案 2 :(得分:0)
确保清单文件中包含以下内容:
<application ...>
<meta-data
android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" /> <!-- if app is a game -->
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />