2014-01-21 6 views
15

В моем приложении для Android я пытаюсь получить токен google, чтобы проверить его на моем сервере брандмауэра. Но я всегда получаю это исключение:com.google.android.gms.auth.GoogleAuthException: исключение getToken (Неизвестный источник)

com.google.android.gms.auth.GoogleAuthException: getToken(Unknown Source) exception 

Мой код:

private Account mAccount = AccountManager.get(this).getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE)[0]; 
    private static final String SCOPE = "audience:server:client_id:" +Constants.WED_CLIENT_ID; 
    String token = GoogleAuthUtil.getToken(LoginActivity.this, mAccount.name, SCOPE); 

Я попытался каждое решение, предложенное в Stackoverflow.

ответ

15

После 2 дней исследований я обнаружил, что в то время, когда вы регистрируете свое приложение для Android в Google Cloud Console -> ваш проект -> API и auth, он запрашивает отпечатки пальцев, чтобы генерировать ClientID, и каким-то образом мой отпечаток был неправильным (я случайно добавил ~$ перед этим ЦМД keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1) и из-за этого он дает мне неправильный отпечаток пальца и был первопричину:

com.google.android.gms.auth.GoogleAuthException: getToken(Unknown Source) exception. 
+0

не могли бы вы помочь мне в этой ошибке http://stackoverflow.com/questions/21445265/google-coordinate-authentification –

+0

можете поделитесь этим кодом здесь? –

+0

@SmitPatel Я не понимаю .. вы хотите код для отпечатка пальца ??? –

16

Через несколько часов, я обнаружил, что в вашей области видимости строки ("audience:server:client_id:...") вы должны использовать идентификатор клиента веб-приложения, а не андроида.

Идентификатор клиента приложения для Android не используется. Только здесь можно связать имя пакета вашего приложения Android с вашим веб-приложением.

+2

Но я использую WEB CLIENT ID. Я вообще не использую идентификатор Android. Проблема была в чем-то еще, о чем я уже ответил ... Спасибо! ! –

+0

аххх, это сработало! – iBabur

+0

привет! та же проблема, хотя и не получила решение. в моей области я использую идентификатор клиента в веб-клиенте, созданный в консоли разработчика Google, но его не работает :( –

2

После прочтения пары сообщений в Интернете я сгенерировал SHA1 значение отпечатка пальца моего хранилища ключей в

Keytool -exportcert -alias android_keystore -keystore android_keystore -list -v | openssl sha1

, из-за которого я получал эту ошибку. Если вы видите, учетные данные на экране в вас Google консоли разработчика он говорит, что вы должны использовать

Keytool -exportcert -alias android_keystore -keystore android_keystore -list -v

т.е. не Направьте вывод openssl sha1. Не уверен, в чем разница, но обе команды дают разные значения.

Вы получите несколько отпечатков пальцев, таких как MD5, SHA1, SHA256 и т. Д. Используйте значение SHA1.

Смежные вопросы