删除 google play 游戏数据后卡住无法登录
Posted
技术标签:
【中文标题】删除 google play 游戏数据后卡住无法登录【英文标题】:Stuck and unable to sign in after deleting google play games data 【发布时间】:2018-12-08 00:30:59 【问题描述】:我正在为我的 libgdx 游戏使用 Google Play 服务。我创建了一些虚拟成就来测试,后来想删除它们。在我的手机上,我去了 Google Play 游戏 -> 设置 -> 删除 Play 游戏数据 -> 从我的游戏中删除的数据。
回到我的游戏后,我注意到游戏认为我仍在登录。我使用以下代码检查用户是否已登录:
@Override
public boolean isSignedIn()
return GoogleSignIn.getLastSignedInAccount(androidLauncher) != null;
如果用户没有登录,我会尝试让他们静默登录
private void signInSilently()
signedInClient.silentSignIn().addOnCompleteListener(androidLauncher,
new OnCompleteListener<GoogleSignInAccount>()
@Override
public void onComplete(@NonNull Task<GoogleSignInAccount> task)
if (task.isSuccessful())
signedInAccount = task.getResult();
);
如果我不能让他们安静地签名。我创建了一个新意图并让他们手动登录并授予对应用的访问权限:
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess())
signedInAccount = result.getSignInAccount();
showSignedInDialog();
问题是,删除 Play 游戏数据后,我的方法 isSignedIn
始终返回 true。但是,当我尝试执行显示成就之类的操作时,出现以下错误:
com.google.android.gms.common.api.ApiException: 4: The user must be signed in to make this API call.
成就展示代码:
@Override
public void showAchievements()
androidLauncher.runOnUiThread(new Runnable()
@Override
public void run()
if (isSignedIn())
loadingView.showLoadingView();
Games.getAchievementsClient(androidLauncher, signedInAccount)
.getAchievementsIntent()
.addOnSuccessListener(new OnSuccessListener<Intent>()
@Override
public void onSuccess(Intent intent)
androidLauncher
.startActivityForResult(intent, RC_ACHIEVEMENT_UI);
)
.addOnFailureListener(new OnFailureListener()
@Override
public void onFailure(@NonNull Exception e)
Logger.error(e);
)
);
我很好奇为什么会这样。根据the documentation,我的isSignedIn
方法应该可以正常工作。但是,因为我在实际尝试进行 API 调用时遇到了错误,所以该方法似乎不起作用。我只能假设这一切都是因为我删除了我的 Play 游戏数据,因为在那之前一切正常。
我要注意的其他事项 - 我尝试让我的 isSignedIn
方法返回 false 以强制进行静默登录。我的静默登录返回以下错误:
com.google.android.gms.common.api.ApiException: 8: 8:
我做了一些研究,发现了bug report。看起来状态码 8 是an Internal Error。谷歌至少看起来be aware of the issue。
更新:在我的 isSignedIn
方法返回 false 并禁用我的静默登录后,我强制手动登录。强制手动登录并登录后,现在作品。但是,如果用户遇到同样的问题,我将无法为他们这样做。他们会被卡住,因为 isSignedIn
方法在删除 Play 游戏数据后似乎总是返回 true。
【问题讨论】:
你可以尝试清除缓存吗? 【参考方案1】:我遇到了类似的问题,对我有用的是为我的项目启用 Google Drive API。不知道为什么这有效,但确实有效。
转到https://console.developers.google.com/apis,然后打开“库”菜单选项。从那里搜索“Drive”并单击“Google Drive API”项。然后您应该会看到一个启用按钮。
【讨论】:
以上是关于删除 google play 游戏数据后卡住无法登录的主要内容,如果未能解决你的问题,请参考以下文章
Google Play Developer Console - 删除游戏服务
Android 模拟器上的 Google Play 服务和 Google Play 游戏应用