2017-01-03 74 views
0

我已經撞了很多天的頭靠牆。儘管閱讀了很多描述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 

根據https://developers.google.com/android/reference/com/google/android/gms/games/GamesActivityResultCodes ...

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客戶端代碼,但這沒有什麼區別。

我不確定在這裏還提供什麼,但請讓我知道如果你需要看到代碼的任何其他部分。我會非常感謝任何關於在代碼或日誌中檢查的建議,以便更好地瞭解爲什麼這樣做會失敗。

非常感謝提前。

+0

您是在[Google Play開發者控制檯](https://play.google.com/apps/publish)還是在[Google API控制檯](https://console.developers.google.com)中創建它)? – ianhanniballake

+0

首先,我將該應用添加到開發者控制檯中的遊戲服務。然後我點擊鏈接的應用程序鏈接並將其添加到此處以授權它...從這裏開始,我進入API管理器,這是我輸入名稱,包和SHA-1指紋的地方。 – Gavin

回答

0

我認爲你應該仔細閱讀(或重讀)所有描述here的程序。 如果您在再次從頭開始學習教程後需要更多幫助,請添加註釋。與此問題

90%涉及:錯誤的SHA1簽名證書,錯誤應用程序包名,失蹤客戶ID和像那些......

PS:here你可以找到所有的工作樣本

+0

謝謝你。我真心希望我的問題在你說的時候是微不足道的,因爲我有點不知所措!我將在您提供的鏈接中再次執行這些步驟,並讓您知道我如何繼續。 – Gavin

+0

按照鏈接中提供的步驟在Google Play開發者控制檯中刪除並重新註冊了我的遊戲。在我的清單和Gradle文件中雙擊檢查客戶端ID,包名詳細信息。在defaultConfig下的applicationId中發現了一個錯字...現在它起作用了。 :) 謝謝。 – Gavin

+0

不錯!如果在某些部分幫助您找到問題,您可以接受答案;) – MatPag

0

軟件包名稱出現在項目中的許多位置,並且必須與在Google Play開發者控制檯中註冊的軟件包名稱匹配。例如。 -

機器人的build.gradle

defaultConfig { 
    applicationId "com.package.name" 
    ... 
} 

的Android的AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.package.name" 
    ... 
</manifest> 

我在Android的build.gradle曾在我的applicationID一個錯字。一旦更正,Google Play服務成功登錄。

相關問題