我已經撞了很多天的頭靠牆。儘管閱讀了很多描述GPS登錄失敗的問題/解決方案的帖子,但我一直無法找到解決我的問題的方法。谷歌Play遊戲服務未能登錄
總之,我開發使用LibGDX框架Android Studio中游戲,增加了BaseGameUtils作爲庫和添加了所有必要的依賴等
問題陳述:遊戲開始時,它會嘗試連接到GPGS,但始終以「登錄失敗」消息響應。該logcat中包含以下信息:
01-03 19:37:41.744 6693-7436/? E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE
01-03 19:37:41.764 20609-20609/? I/SignInActivity: Transition from 6 to 11
01-03 19:37:41.764 20609-20609/? W/SignInActivity: onSignInFailed()...
01-03 19:37:41.764 20609-20609/? W/SignInActivity: Sign in failed during 6
01-03 19:37:41.764 20609-20609/? W/SignInActivity: ==> Returning non-OK result: 10002
public static final int RESULT_SIGN_IN_FAILED
Result code sent back to the calling Activity when signing in fails.
The attempt to sign in to the Games service failed.
For example, this might happen if the network is flaky,
or the user's account has been disabled, or consent could not be obtained.
Constant Value: 10002
我的網絡是不是「酥」,我不認爲我的帳戶已被禁用 - 其他商業遊戲我用GPGS安裝完美的工作。
我已經簽署了我的APK - 調試和發佈(儘管我只在這個階段使用調試)。我已將該遊戲添加到Google Developer Console中,並將其鏈接到API管理器中,並創建了OAuth2客戶端ID。事實上,我已經做了很多次這樣的事情,刪除鏈接的遊戲並重新創建它,認爲我的客戶端ID或SHA1指紋不正確。 logcat消息表明OAuth2配置是錯誤的,但我已經檢查了很多次,這一切對我來說都很好。驗證簽名的最佳方法是什麼?
我正在測試的物理三星S7,我直接從我的筆記本電腦部署。我的Android Gradle具有必要的SigningConfigs聲明,所以我相信我部署的遊戲應該正確簽名。
android {
signingConfigs {
config {
keyAlias 'mygame-key'
keyPassword 'mypassword'
storeFile file('path/to/my/keystore.jks')
storePassword 'keystorepassword'
}
}
buildTypes {
release {
signingConfig signingConfigs.config
}
debug {
signingConfig signingConfigs.config
debuggable true
}
}
在我的清單中,我有必需的行。例如。 -
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
原來,在AndroidLauncher,我用的是GameHelper類,但最近發現,這是被棄用,因此,我改變了我的代碼使用GoogleApiClient。助洗劑的定義如下:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();
對於其它方法的代碼已被直接取自TrivialQuest示例應用程序,例如 -
@Override
protected void onStart() {
Log.d(TAG, "onStart()");
super.onStart();
mGoogleApiClient.connect();
}
但是,儘管使用Google API客戶端代碼,但這沒有什麼區別。
我不確定在這裏還提供什麼,但請讓我知道如果你需要看到代碼的任何其他部分。我會非常感謝任何關於在代碼或日誌中檢查的建議,以便更好地瞭解爲什麼這樣做會失敗。
非常感謝提前。
您是在[Google Play開發者控制檯](https://play.google.com/apps/publish)還是在[Google API控制檯](https://console.developers.google.com)中創建它)? – ianhanniballake
首先,我將該應用添加到開發者控制檯中的遊戲服務。然後我點擊鏈接的應用程序鏈接並將其添加到此處以授權它...從這裏開始,我進入API管理器,這是我輸入名稱,包和SHA-1指紋的地方。 – Gavin