Получение токена авторизации 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, Когда я делаю веб-поток с одинаковыми параметрами, он работает.

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

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

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

  2. Должно включать https://www.googleapis.com/auth/plus.login в вашу область действия

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

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

Вам просто нужно выполнить правильные шаги / формат для указания областей. Найдите их здесь https://developers.google.com/android/guides/http-auth#SpecifyingScopes