android - 为什么我无法登录谷歌玩游戏
问题描述
我在 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 中相同
解决方案
基于来自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问题中提供了这些文档的来源,这导致了该问题上的相同错误。
推荐阅读
- c - 如何读取文本文件并将其存储在 C 编程中的数组中(以逗号分隔的值)?
- mysql - 在 MySQL 中插入/更新多行的正确方法是什么?我做对了吗?
- lucene - 如果编辑距离 = 2,2 个字母的搜索词是否可以匹配 3 个字母的索引词
- java - 如何在 Spring Batch ItemWriter 中为子 bean 编写多个 XML 文件?
- android - Flutter:将串口转发到模拟器
- python - 为什么 Python 使用全局变量而不是方法参数?
- html - 为 JAWS 提供替代文本
- sql-server - 计算机帐户无法以 SYSADMIN 身份登录
- javascript - MongoDB数组变成数据库上的字符串
- jar - 构建 Corda fat-jar 客户端时出现“错误:无法找到或加载主类”