Я уже два дня бил головой о стену, чтобы попросить о помощи.Извлечь данные из пользовательских данных Google с сервера по идентификатору ID
Я пытаюсь получить мою голову вокруг следующий:
знаков Мобильного пользователя приложения в на приложении, используя один из следующих вариантов:
- и т. д.
Сначала я сосредоточусь на Google, работа входа (пользователь соглашается на разрешение). Затем приложение извлекает токен: GoogleAuthUtil.getToken(mActivity, mEmail, mScope);
Где область будет иметь вид audience:server:client_id:XXXXXX
И XXXXXXX
является client_id моего веб-сервиса.
(мобильное приложение также зарегистрирован на консоли Google, и это в том же проекте, как веб-сервер)
Затем приложение посылает извлеченный маркер на мой веб-сервер, где сервер может получить полезную нагрузку, используя $client->verifyIdToken($id_token);
. Мой сервер использует Google API Client.
Но теперь я хочу использовать это, чтобы сервер извлекал пользовательские данные из Google, не запрашивая у пользователя дополнительные разрешения (поскольку они уже предоставили приложению разрешения). Итак, как мне получить полезную нагрузку для запроса пользовательских данных из Google?
Я все еще развлекаю мысль о том, что я могу полностью не понимать весь этот процесс Oauth2.0/SSO, поэтому любые указатели глубоко оценены!
Сообщение в блоге, которое вы упомянули, указывает на решение PHP также (полностью внизу), это тот, который я использую. Если я сгенерирую токен с другими областями, как вы упомянули, мой веб-сервер не сможет обработать токен: «Ошибка при получении маркера доступа Oauth2: неавторизованный клиент». Или мне нужна область, например 'oauth2: https: //www.googleapis.com/auth/userinfo.profile аудитория: server: client_id: XXXXXX'? Вы очень благодарны за помощь! –
Использование обеих областей дает ошибку 'INVALID_SCOPE', я думаю, что моя основная проблема заключается в том, что я не совсем понимаю, как происходит взаимодействие между приложением и сервером. Правильно ли я предполагаю, что приложение получает токен от Google, встроенный с некоторыми разрешениями, отправляет его на сервер, а сервер использует токен для выполнения разрешенных действий? –
Если вы используете несколько областей, вы разделяете их пробелом (только с 'oauth2:' перед первым) в вашем вызове 'GoogleAuthUtil.getToken' в соответствии с http://android-developers.blogspot.com/ 2012/09/google-play-services-and-oauth-identity.html Следует отметить, что область «аудитория: сервер: клиент_ид» не требует какого-либо взаимодействия с пользователем, но для всех других областей требуется авторизация и разрешение пользователя диалог (ы). Ссылка в этом комментарии также проходит через этот процесс. – ianhanniballake