我目前正在开发一个Android应用程序,我想在其中使用Google游戏服务(成绩,领头板,.)。经过多次迭代,我终于得到了显示、Google、Login、的代码。现在的问题是,在用户在中签名之后,需要一段时间,然后抛出错误代码4,错误消息为空。在做了大量的研究之后,没有什么能真正帮助我解决这个问题。
我已经尝试过从Android直接启动它,手动或通过Google安装该应用程序,所有这些都是在多个设备上进行的,没有任何效果。
如果需要的话,这里有一些代码:
private static GoogleSignInClient mGoogleSignInClient;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mGoogleSignInClient = GoogleSignIn.getClient(this, new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).requestIdToken(getResources().getString(R.string.app_id)).build());
signInSilently(); // Can't be tested yet.
// isSignedIn() and loginDeclined are both false
if(!isSignedIn() && !loginDeclined) startSignInIntent();
}
...
private void startSignInIntent() {
startActivityForResult(mGoogleSignInClient.getSignInIntent(), RC_SIGN_IN);
loginDeclined = true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
// resultCode = 0
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task =
GoogleSignIn.getSignedInAccountFromIntent(intent);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
// Now this never happens :(
System.out.println("SUCCESS!");
} catch (ApiException apiException) {
System.out.println(apiException.getStatusCode() + " + " + apiException.getMessage());
// statusCode is 4, message is "4: "
String message = apiException.getMessage();
if (message == null || message.isEmpty()) {
message = "Error signing in to Google Play Games";
}
new android.app.AlertDialog.Builder(this)
.setMessage(message)
.setNeutralButton(android.R.string.ok, null)
.show();
}
}
}发布于 2019-06-04 22:09:15
确保使用SHA1键。
命令“-list -keystore path to debug keystore”可能会显示SHA-256键。
要获得SHA1密钥,可以执行以下步骤:
发布于 2020-03-24 15:35:26
在网上搜索了几个小时并检查了google游戏服务文档(https://developers.google.com/games/services/android/troubleshooting)中的故障排除部分的每一步之后,我填写了"OAuth同意书“表单,它终于起作用了。
在那之后,我的Google Play Game登录立即生效。
发布于 2019-01-02 21:53:14
请查阅下列有关GPG签署的详细资料:
清单中的元数据标记应该与应用程序的数字ID匹配,并且应该只包含数字。同时还要检查你的包裹名。不要使用示例应用程序包名称。用你自己的。
您正在签署游戏的证书应该与与您的客户ID相关的证书指纹相匹配。
最后一件重要的事情是,检查是否启用了测试帐户。我老是忘了这一步。
确保应用程序签名证书中的指纹与来自游戏服务的链接应用程序匹配。您还可以通过导航到Google控制台来验证这些细节,->选择您的应用程序->凭据-> OAuth 2.0客户机ID。
我注意到的另一件事是,如果应用程序发布了,那么您需要从Play Store安装应用程序,这些凭证才能正常工作。如果应用程序尚未发布,那么请确保您使用的是调试指纹,并且与游戏服务(Debug指纹)中的匹配。
只要你有这些指纹,你就会没事的。如果您仍然有问题,我建议您通过代码实验室一步一步地获得关于如何扩展现有的统一游戏以在安卓设备上运行和集成游戏服务的帮助。unity/index.html?index=.%2F.%2 2Findex#0
或者,下面是帮助快速测试的示例应用程序-- https://github.com/playgameservices/android-basic-samples。
您也可以帮助我们更好地理解这个问题。
https://stackoverflow.com/questions/54010800
复制相似问题