java - Google 登录在启用 Play 游戏服务的情况下无法使用,但在未启用 Play 游戏服务的情况下也可以使用

标签 java android google-play-services google-signin google-play-games

首先让我们看一下运行完美的代码。这就是我们设置 Google Api 客户端的方式:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail() 
                .requestIdToken(AppActivity.this.getResources().getString(R.string.server_client_id))
                .build();

GoogleSignIn.googleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();

然后这个用于连接:

// GPGS needs optional apparently, at least it crashes without. 
// Normal (non GPGS) SignIn works either way
googleApiClient.connect(SIGN_IN_MODE_OPTIONAL); 

然后我们调用登录。出现覆盖层,我选择我的电子邮件,登录运行,一切都很好:

public static void loginGoogleSDK()
{
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
    GameApplication.getActivity().startActivityForResult(signInIntent, RC_SIGN_IN);
}
<小时/>

现在,Google Play 游戏服务登录非常相似,但总是返回用户已取消错误。 GPGS 覆盖出现,可以选择一封电子邮件,然后它消失并返回错误:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
            .requestEmail()
            .requestIdToken(AppActivity.this.getResources().getString(R.string.server_client_id))
            .build();

GoogleSignIn.googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Games.API)
            .addScope(Games.SCOPE_GAMES)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

连接和登录完全等同。

用户已取消结果代码返回此处:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // cancelled = true when using GPGS 
    GameLog.i("On Activity Result called, cancelled? " + (resultCode == RESULT_CANCELED) );


    // [Other code for handling login....]


}

有谁知道导致此问题的原因以及我们如何才能正常登录 Google Player Games Services?

最佳答案

我的代码 100% 正确。

我必须在我的游戏下的 Google Play 开发者控制台的“测试人员”下添加我的电子邮件。

这对于 Google+ 登录来说不是必需的,但对于游戏来说是必需的。

关于java - Google 登录在启用 Play 游戏服务的情况下无法使用,但在未启用 Play 游戏服务的情况下也可以使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44856951/

相关文章:

java - 将对象移动到列表末尾的优雅方式

android - Compose Spacer 与 View 填充性能

java - onBackPressed 之后 onActivityResult 将不起作用

java - base64 java中的失败编码文件

java - Char* 在 JNI 调用中损坏

android - 如何在 'debug' Firebase 数据库上运行调试应用程序版本

android - 无法解决 : com. google.firebase :firebase-core:11. 2.0

android - Google Play 服务不适用于 Android 模拟器 API 级别 11

java - 当 Canvas 表面 View 位于另一个 Canvas 之上时,无法将其圆角化

android - 页面正在加载 WebView 时的进度对话框