Вход в Google iOS и Интернет

Я создаю систему с помощью Интернета и приложения для iOS. Веб-часть требует аутентификации, которую можно использовать в мобильной части и наоборот. Я хочу добавить поддержку входа в Google в Интернете и в мобильной части. Для теста я использовал код из

https://developers.google.com/identity/sign-in/ios/start-integrating

для iOS и

https://developers.google.com/identity/sign-in/web/

для веб-части. область действия одинакова в приложении и в Интернете (электронная почта, профиль)

Ожидаемый поток

  1. Пользователь входит в систему с помощью Google и предоставляет доступ с мобильного устройства (или через Интернет)
  2. пользователь переходит на веб-сайт (или в приложение)
  3. пользователь входит в систему с помощью google
  4. нет необходимости снова давать разрешение

Что у меня есть

  1. Пользователь входит в систему с помощью Google и предоставляет доступ с мобильного телефона
  2. пользователь заходит на сайт
  3. пользователь входит в систему с помощью google
  4. такое же разрешение спрашивается снова

Как мне избежать повторного запроса разрешения? из документации (https://developers.google.com/identity/sign-in/web/cross-platform-sign-in) кажется возможным получить ожидаемый поток, но на практике я не могу его получить. iOS и Интернет находятся в одном проекте для разработчиков Google.


person whtman    schedule 02.10.2015    source источник


Ответы (1)


Я выполнил эту работу, как ожидалось, следуя этим руководствам: https://developers.google.com/identity/protocols/CrossClientAuth https://developers.google.com/identity/sign-in/ios/offline-access

вам нужно сделать следующее:

сначала добавьте [GIDSignIn sharedInstance].serverClientID = @"SERVER_CLIENT_ID";

в вашем приложении для iOS Когда пользователь аутентифицируется через приложение, вы теперь можете получить токен, действительный для вашего server_client_id, через атрибут serverAuthCode вашего GIDGoogleUser объекта.

Отправьте токен на сервер и проверьте его на конечной точке токена (/ oauth2 / v3 / token) redirect_uri должен быть пустым, а grant_type должен быть authorization_code в противном случае вы получите ответ 400.

Теперь ваш сервер аутентифицирован, и когда пользователь войдет на сайт, разрешение больше не будет запрашиваться.

person whtman    schedule 08.10.2015