玩游戏ERROR INVALID CREDENTIAL

问题描述 投票:0回答:1

我正在尝试使用firebase中的应用程序使用PlayGames登录服务,但是当我这样做时,总会出现此错误:

“com.google.firebase.auth.FirebaseAuthInvalidCredentialsException:提供的身份验证凭据格式错误或已过期。”

异常错误:

提供的身份验证凭据格式错误或已过期。 [无法从https://www.googleapis.com/games/v1/players/me获取资源,http状态:403,http响应:{“错误”:{“errors”:[{“domain”:“global”,“reason”:“forbidden”,“message”:“Forbidden “},”code“:403,”message“:>”禁止“}}]

我的代码:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .requestServerAuthCode("xxx.apps.googleusercontent.com", true)
        .build();


    GoogleSignInClient signInClient = GoogleSignIn.getClient(this, gso);
    Intent intent = signInClient.getSignInIntent();
    startActivityForResult(intent, RC_SIGN_IN);

}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        Task < GoogleSignInAccount > task = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {
            // Google Sign In was successful, authenticate with Firebase
            GoogleSignInAccount account = task.getResult(ApiException.class);
            firebaseAuthWithPlayGames(account);
        } catch (ApiException e) {
            // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e);
        }
    }
}

private void firebaseAuthWithPlayGames(GoogleSignInAccount acct) {
    mAuth = FirebaseAuth.getInstance();
    FirebaseUser currentUser = mAuth.getCurrentUser();
    AuthCredential credential = PlayGamesAuthProvider.getCredential(acct.getServerAuthCode());
    Log.d(TAG, "firebaseAuthWithPlayGames4:" + acct.isExpired());
    mAuth.signInWithCredential(credential)
        .addOnCompleteListener(this, new OnCompleteListener < AuthResult > () {
            @Override
            public void onComplete(@NonNull Task < AuthResult > task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "signInWithCredential:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                } else {
                    //here get the exception error always
                    Log.w(TAG, "signInWithCredential:failure", task.getException());
                    Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                }
            }
        });
}

什么意思是格式错误?,我必须在凭证中添加更多信息?

android firebase google-play-games
1个回答
0
投票

好的,我解决了错误:

1-我使用了一个不正确的变量“DEFAULT_SIGN_IN”。我不得不为“DEFAULT_GAMES_SIGN_IN”更改它(在此之后,我收到了12501错误,但是后续步骤解决了这个问题)

2-我必须在Android标签的AndroidManifest.xml中添加这2行:

<application ....>
    <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" />
</ application>

3-我必须在string.xml中添加我的APP ID:

<string name = "app_id"> xxxxxx815210 </ string>

该应用程序在您的谷歌控制台 - >游戏服务 - >您发布的服务中位于顶部(在游戏标题下)

完成这3个步骤后,该应用程序可以连接到Play游戏服务。

© www.soinside.com 2019 - 2024. All rights reserved.