Подтвердить что ты не робот

Получение токена авторизации Google oauth с Android-return с invalid_scope/Неизвестная ошибка

Я пытаюсь использовать Google oauth для аутентификации пользователей в приложении для Android. Затем я хотел бы отправить его на сервер приложений, чтобы он мог в любой момент подключиться к календарю Google.

Я попытался использовать    GoogleAuthUtil.getToken(getApplicationContext(), mAccountName, mScope);

Следуя этой статье: https://developers.google.com/accounts/docs/CrossClientAuth

Когда я использую его с областью mScope = "oauth2:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"; Я получаю токен, который действителен в течение часа

Но когда я пытаюсь получить код авторизации (так что я могу получить токен обновления, который действителен в течение более длительного времени, используя mScope2 ="oauth2:server:client_id:{CLIENT_ID}.apps.googleusercontent.com"+ ":api_scope:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile";

Я получаю либо исключения "invalid_scope", либо "Неизвестные".

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

EDIT: ОК. После создания нового приложения на консоли Google API и добавления в область видимости plus.login я получаю код, но по какой-то причине мой сервер не может решить этот токен. При связывании для разрешения сервера получает сообщение об URL-адресе перенаправления. BTW, Когда я делаю веб-поток с одинаковыми параметрами, он работает.

4b9b3361

Ответ 1

ОК, нашел решение, я ожидал, что Google будет иметь гораздо лучшую документацию о работе с Google Oauth и Android. Несколько вещей, которые вы должны знать, чтобы работать с Android и автономным токеном

  • При создании идентификатора клиента Google Не создавайте приложение-службу перед созданием веб-приложения

  • Должен включать https://www.googleapis.com/auth/plus.login в свой объем

  • Самое странное, чтобы разрешить одноразовый код авторизации на моем сервере, мне пришлось использовать URL перенаправления из данных идентификатора клиента Android (который даже не похож на URL-адрес), а не из веб-клиента информацию о консоли Google API.

Ответ 2

Эта строка области видится только для работы при передаче в GoogleAuthUtil(), см. http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html на Android. Но было бы здорово, если бы он работал и на iOS; наша инфраструктура немного отстает от того, где были на Android.