无法使用Google Play游戏服务登录

时间:2018-07-23 23:48:30

标签: android firebase kotlin google-signin google-play-games

尝试使用Google登录到Firebase并使用Google Play游戏服务,并且在尝试登录时遇到以下异常:

W/MainActivity: Google sign in failed
    com.google.android.gms.common.api.ApiException: 13: 
        at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source:14)
        at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source:47)
        at ca.doophie.scarletflames.MainActivity.onActivityResult(MainActivity.kt:63)
        at android.app.Activity.dispatchActivityResult(Activity.java:7276)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4264)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4312)
        at android.app.ActivityThread.-wrap19(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1644)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

我按照指南here设置了Google登录,仅更改了我的登录选项(如下所示)。我还为Google Play控制台中的应用打开了Google Play服务,添加了Android调试密钥存储区SHA1和发布SHA1密钥。

代码如下:

// Configure Google Sign In
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
        .requestIdToken(context.getString(R.string.default_web_client_id))
        .requestEmail()
        .build()

在我的清单中我有这个:

<meta-data android:name="com.google.android.gms.games.APP_ID"
    android:value="@string/app_id" />
<meta-data android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version"/>
<meta-data android:name="com.google.android.gms.games.API_KEY"
    android:value=  "@string/api_key" />

这些就在我的掌中:

implementation "com.google.android.gms:play-services-games:15.0.1"
implementation "com.google.android.gms:play-services-auth:15.0.1"
implementation 'com.google.firebase:firebase-auth:16.0.2'

最后,这是我登录的地方:

val signInIntent = mGoogleSignInClient?.signInIntent ?: return
startActivityForResult(signInIntent, rc)

和:

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == LoginController.RC_SIGN_IN) {
        val task = GoogleSignIn.getSignedInAccountFromIntent(data)
        try {
            // Google Sign In was successful, authenticate with Firebase
            val account = task.getResult(ApiException::class.java)
            loginController?.firebaseAuthWithGoogle(account)
        } catch (e: ApiException) {
            // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e) //Exception is here
        }
    }
}

0 个答案:

没有答案