我正在努力使游戏API工作,并参考https://github.com/playgameservices/android-samples/blob/master/BaseGameUtils/src/com/google/example/games/basegameutils/BaseGameActivity.java作为示例代码。
我非常相似,基本上我正在尝试连接游戏客户端并收到否定答案。当尝试使用startResolutionForResult()来管理它时,这就是我得到的:
E/Volley(15638): [1492] il.a: Unexpected response code 403 for https://www.googleapis.com/games/v1/players/112370814111712506xxx
E/Volley(15638): [1492] il.a: Unexpected response code 403 for https://www.googleapis.com/games/v1/players/112370814111712506xxx
E/SignInIntentService(15638): Access Not Configured
[...]
E/LoadSelfFragment(15748): Unable to sign in - application does not have a registered client ID
最后一条消息,“应用程序没有注册的客户端ID”让我想到了this的问题...但我不认为我的问题与应用程序ID /客户端ID有关,因为我得到了它在另一台机器上使用相同的API密钥。我非常确定从当前机器的debug.keystore派生的SHA1正确性。
问题似乎与我正在使用的测试地址有关,奇怪的是我没有收到相同的回复:使用相同的密钥和设置,我有时得到:
E/SignInIntentService(15638): Access Not Configured
甚至:
E/SignInIntentService(15638): Unable to load player
我在OnConnectionFailedListener中使用startResolutionForResult()
,它会短暂显示登录屏幕,但随后会报告错误而崩溃。
另一个奇怪的事情是调用了onActivityResult(),结果代码是10004
我无法理解的最后一件事是,在登录失败后,一遍又一遍地调用onConnectionFailed()方法,循环我的应用程序。相关代码是:
public void initClient() {
GamesClient.Builder gcBuilder = new GamesClient.Builder(this, cb, cf);
gcBuilder.setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
//gcBuilder.setScopes(mScopes);
mGamelient = gcBuilder.create();
mSchiacciameleView.setGameClient(gcBuilder.create());
}
OnConnectionFailedListener cf = new OnConnectionFailedListener() {
public void onConnectionFailed(ConnectionResult arg0) {
Log.e("Verme", "CONN FAIL:" + arg0.getErrorCode());
if (arg0.hasResolution()){
PendingIntent pendingIntent = arg0.getResolution();
//startResolutionForResult(SchiacciaMeleGame.this, 66);
try {
arg0.startResolutionForResult(me, ConnectionResult.SIGN_IN_REQUIRED) ;
} catch (SendIntentException e) {
Log.e("Verme", "Err in resolution", e);
}
}else{
Log.e("Verme", "NO RESOLUTION");
}
}
};
这两天我一直在搞乱这些图书馆。坦率地说,我不喜欢谷歌管理这个的方式;文档仍然不完整,运行时行为似乎有点不一致(完全相同的代码在另一台机器上运行,SHA1在两者上都是正确的)。也许这是我的错?
感谢您的回复
答案 0 :(得分:0)
在Step 3. Generate an OAuth 2.0 client ID中,它特别发出如下警告:
警告:请勿直接手动打开Google API控制台 在该页面上添加您的客户ID。这样做可能会导致错误 你向游戏服务发送请求。
所以我的经验是你需要虔诚地遵循指南:Setting Up Google Play Game Services with the Google Play Developer Console