Ошибка GoogleAuthException при получении токена доступа с ClientID

Для большего контекста этот пост следует этому.

Чтобы решить мою предыдущую проблему, я попытался выполнить решение, представленное здесь Тимом Брей: Проверка обратных вызовов из приложений для Android

Я объявил два проекта в Google APIs Console получить два идентификатора клиента

  • Первый как "веб-приложение" с "localhost" как имя хоста (это имеет значение?)
    • Идентификатор клиента: XXXXXXXXXX.apps.googleusercontent.com
  • Второе приложение для Android с именем пакета, указанным в AndroidManifest.xml и отпечатке пальца SHA1 (с использованием debug.keystore и [my].keystore)
    • Идентификатор клиента: YYYYYYYYYY.apps.googleusercontent.com

К сожалению, я столкнулся с исключением в Android-стороне:

com.google.android.gms.auth.GoogleAuthException: Unknown
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:66)
at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1102)

В строке:

return GoogleAuthUtil.getToken(LoginActivity.this, account[0], "audience:server:client_id:XXXXXXXXXX.apps.googleusercontent.com");

Что я делаю неправильно?

Заранее спасибо

Ответ 1

Два идентификатора клиента должны быть частью одного и того же проекта.

Ответ 2

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

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

Ответ 3

Нет необходимости делать больше. Пожалуйста, заново создайте свой идентификатор клиента в консоли Google и напишите эту строку в своем коде как строку области.

String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile";

https://github.com/AshishPsaini/GoogleAuth

Ответ 4

Я получил эту ошибку, когда я изменил имя своего пакета и забыл создать новый идентификатор клиента с помощью отладки SHA1 в консоли API Google.

Ответ 5

Измените область, добавленную в GoogleApiCliente, на Plus.SCOPE_PLUS_LOGIN. Эта работа для меня.

    googleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Plus.API)
            .addScope(Plus.SCOPE_PLUS_LOGIN)
            .build();