Android 为什么我能';t登录谷歌玩游戏

Android 为什么我能';t登录谷歌玩游戏,android,android-studio,google-play-games,Android,Android Studio,Google Play Games,我一天前尝试登录谷歌游戏,但从未登录,除非我收到下面的消息 Logcat 显示 Java代码 public类MainActivity扩展了AppCompatActivity{ @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } 私人空间明显无效{ GoogleSignInClient signInCli

我一天前尝试登录谷歌游戏,但从未登录,除非我收到下面的消息

Logcat

显示


Java代码

public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
私人空间明显无效{
GoogleSignInClient signInClient=GoogleSignIn.getClient(此,
谷歌登录。默认(游戏登录);
signInClient.silentSignIn().addOnCompleteListener(此,
新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
GoogleSignInAccount SignedAccount=task.getResult();
Toast.makeText(MainActivity.this,“a”,Toast.LENGTH_SHORT.show();
}否则{
Log.i(“salahtaha”,String.valueOf(task.getException());
}
}
});
}
@凌驾
受保护的void onResume(){
super.onResume();
显著地();
}
}
我使用游戏服务在google play控制台上添加了游戏,它与firebase项目相链接

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


基于

查看API异常,提供了状态代码4,它与Google的Android API文档中的以下信息相链接

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

另外,对于您正在显著调用的方法,我还发现了以下信息:

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

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


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

基于

查看API异常,提供了状态代码4,它与Google的Android API文档中的以下信息相链接

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

另外,对于您正在显著调用的方法,我还发现了以下信息:

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

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



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

您可以共享您的清单文件吗?@Nero当然可以。您还可以提供错误日志。除了API例外之外,还必须有更多信息?@Nero我的应用程序中没有错误,但我无法通过google play games登录我不知道你为什么可以共享清单文件?@Nero当然可以。你也可以提供错误日志。除了API异常之外,还必须有更多信息?@Nero我的应用程序中没有错误,但我无法通过google play games登录。我不知道为什么。因此,我相信你正在尝试登录,而之前没有任何经过身份验证的登录记录。为了显著地使用该服务,您必须手动登录该服务。||我不明白这一点,从我发现的,signInSliently将隐藏登录对话框,并登录到服务本身,如果用户之前已经登录。如果不是,它将返回错误代码4。在你的代码中,如果这个代码被返回,你应该要求用户重新登录。事实上,我不明白这件事,它看起来很复杂。首先,我想在gmail中添加普通的谷歌登录按钮还是什么?这是正确的。让我们设法消除这种混乱。用户应正常登录(必须提供用户名+密码)。从那里,您应该能够使用此功能,该功能将再次登录用户,而无需用户再次提供其凭据
如果用户没有手动登录服务,很明显,它总是会失败,因为它找不到最后一次成功的身份验证。但是为什么另一个游戏没有正常的登录按钮(gmail)?因此,我相信您正在尝试登录,而之前没有任何经过身份验证的登录记录。为了显著地使用该服务,您必须手动登录该服务。||我不明白这一点从我所发现的,signInSliently将隐藏登录di
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>
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();
    }

}