首页 > 解决方案 > 为什么我无法登录谷歌玩游戏

问题描述

我在 1 天前尝试登录谷歌玩游戏,但从来没有,除非我收到以下消息。

日志猫

I/salahtaha: com.google.android.gms.common.api.ApiException: 4: 4: 

显现

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.salah250.test.test">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Java 代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    private void signInSilently() {
        GoogleSignInClient signInClient = GoogleSignIn.getClient(this,
                GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
        signInClient.silentSignIn().addOnCompleteListener(this,
                new OnCompleteListener<GoogleSignInAccount>() {
                    @Override
                    public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
                        if (task.isSuccessful()) {
                            GoogleSignInAccount signedInAccount = task.getResult();
                            Toast.makeText(MainActivity.this, "a", Toast.LENGTH_SHORT).show();
                        } else {
                            Log.i("salahtaha",String.valueOf(task.getException()));
                        }
                    }
                });
    }

    @Override
    protected void onResume() {
        super.onResume();
        signInSilently();
    }

}

我使用游戏服务在 google play 控制台上添加了游戏,它与 firebase 项目相关联。

注意:我的应用程序中的 SHA1 在我的 firebase 中相同

标签: androidandroid-studiogoogle-play-games

解决方案


基于来自Google API for Android的CommonStatusCodes

查看 API 异常,提供了状态代码 4,它与来自 Google 的 API for Android 文档的以下信息相关联。

客户端尝试连接到服务,但用户未登录。客户端可以选择不使用 API 继续。或者,如果 hasResolution() 返回 true,则客户端可能会调用 startResolutionForResult(Activity, int) 来提示用户登录。在登录活动返回 RESULT_OK 后,进一步的尝试应该会成功。

另外,您调用 SignInSliently 的方法,我还发现了以下信息:

  • (void) signInSilently
    尝试在没有交互的情况下登录以前经过身份验证的用户。
    在此过程结束时将调用委托,指示成功或失败。

因此,我相信您正在尝试登录,而以前没有任何经过身份验证的登录记录。为了使用 signInSilently,您必须手动登录服务。

感谢noktigula在APIException问题中提供了这些文档的来源,这导致了该问题上的相同错误。


推荐阅读