Google玩游戏APIreturnsSIGN_IN_REQUIRED
Google Play Games API returns SIGN_IN_REQUIRED
我正在尝试在我的 Android 应用程序中实现玩家自动登录 Google 玩游戏。首先,如here所述,我尝试静默登录:
@Override
protected void onResume() {
super.onResume();
signInSilently();
}
private void signInSilently() {
mGoogleSignInClient.silentSignIn().addOnCompleteListener(this, task -> {
if (task.isSuccessful())
//everything ok
else {
final ApiException exception = (ApiException) task.getException();
if (BuildConfig.DEBUG)
Log.d(TAG, "Silent Sign In failure: ", exception);
if (exception.getStatusCode() == CommonStatusCodes.SIGN_IN_REQUIRED)
startSignInIntent();
}
});
每次我遇到代码 4 (CommonStatusCodes.SIGN_IN_REQUIRED) 的异常。所以在这种情况下,我尝试使用 ui:
登录
private void startSignInIntent() {
startActivityForResult(mGoogleSignInClient.getSignInIntent(), RC_SIGN_IN);
}
@Override
protected void onActivityResult(int request, int response, Intent data) {
super.onActivityResult(request, response, data);
if (request == RC_SIGN_IN) {
final GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
// everything is ok, get account from result
} else if (result.getStatus().hasResolution()) {
resolveManually(result.getStatus());
} else {
String message = result.getStatus().getStatusMessage();
if (BuildConfig.DEBUG)
Log.d(TAG, "status code" + result.getStatus().getStatusCode());
if (message == null || message.isEmpty()) {
message = "other error";
}
new AlertDialog.Builder(this).setMessage(message)
.setNeutralButton(android.R.string.ok, null).show();
}
}
}
每次我收到其他错误消息时都会在这里!状态代码再次为 4 (CommonStatusCodes.SIGN_IN_REQUIRED)。当我尝试使用 intent 登录时,如何获取此代码?因此,我的应用程序处于无限循环中,因为每次我的 activity 在收到结果后加载时都会调用 onResume,并且每次状态代码都是 CommonStatusCodes.SIGN_IN_REQUIRED。那么,问题出在哪里呢?
在 Google samples there is no information how can I handle automatic sign in, only manual with sign in buttons. But google recommends 中使用自动登录。请帮助任何人了解这里的问题。
您不得从 onResume 方法启动登录屏幕。这是一种静默登录,如果用户需要(通过点击按钮),它就可以工作。这就是示例仅以这种方式显示的原因。
我的应用调试版本的 OAuth 2.0 客户端 ID 错误!不知道为什么这种情况下会有SIGN_IN_REQUIRED状态码,真是迷惑!
我正在尝试在我的 Android 应用程序中实现玩家自动登录 Google 玩游戏。首先,如here所述,我尝试静默登录:
@Override
protected void onResume() {
super.onResume();
signInSilently();
}
private void signInSilently() {
mGoogleSignInClient.silentSignIn().addOnCompleteListener(this, task -> {
if (task.isSuccessful())
//everything ok
else {
final ApiException exception = (ApiException) task.getException();
if (BuildConfig.DEBUG)
Log.d(TAG, "Silent Sign In failure: ", exception);
if (exception.getStatusCode() == CommonStatusCodes.SIGN_IN_REQUIRED)
startSignInIntent();
}
});
每次我遇到代码 4 (CommonStatusCodes.SIGN_IN_REQUIRED) 的异常。所以在这种情况下,我尝试使用 ui:
登录private void startSignInIntent() {
startActivityForResult(mGoogleSignInClient.getSignInIntent(), RC_SIGN_IN);
}
@Override
protected void onActivityResult(int request, int response, Intent data) {
super.onActivityResult(request, response, data);
if (request == RC_SIGN_IN) {
final GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
// everything is ok, get account from result
} else if (result.getStatus().hasResolution()) {
resolveManually(result.getStatus());
} else {
String message = result.getStatus().getStatusMessage();
if (BuildConfig.DEBUG)
Log.d(TAG, "status code" + result.getStatus().getStatusCode());
if (message == null || message.isEmpty()) {
message = "other error";
}
new AlertDialog.Builder(this).setMessage(message)
.setNeutralButton(android.R.string.ok, null).show();
}
}
}
每次我收到其他错误消息时都会在这里!状态代码再次为 4 (CommonStatusCodes.SIGN_IN_REQUIRED)。当我尝试使用 intent 登录时,如何获取此代码?因此,我的应用程序处于无限循环中,因为每次我的 activity 在收到结果后加载时都会调用 onResume,并且每次状态代码都是 CommonStatusCodes.SIGN_IN_REQUIRED。那么,问题出在哪里呢? 在 Google samples there is no information how can I handle automatic sign in, only manual with sign in buttons. But google recommends 中使用自动登录。请帮助任何人了解这里的问题。
您不得从 onResume 方法启动登录屏幕。这是一种静默登录,如果用户需要(通过点击按钮),它就可以工作。这就是示例仅以这种方式显示的原因。
我的应用调试版本的 OAuth 2.0 客户端 ID 错误!不知道为什么这种情况下会有SIGN_IN_REQUIRED状态码,真是迷惑!