Эта страница переведена с помощью Cloud Translation API.
Switch to English

Связывание аккаунта Google с помощью OAuth

Учетные записи связаны с использованием неявного отраслевого стандарта OAuth 2.0 и потоков кода авторизации . Ваша служба должна поддерживать конечные точки авторизации и обмена токенами, совместимые с OAuth 2.0.

В неявном потоке Google открывает вашу конечную точку авторизации в браузере пользователя. После успешного входа вы возвращаете долгоживущий токен доступа в Google. Этот токен доступа теперь включается в каждый запрос, отправляемый от Google.

В потоке кода авторизации вам понадобятся две конечные точки:

  • Конечная точка авторизации , которая представляет пользовательский интерфейс входа для ваших пользователей, которые еще не вошли в систему. Конечная точка авторизации также создает краткосрочный код авторизации для записи согласия пользователей на запрошенный доступ.

  • Конечная точка обмена токенами, которая отвечает за два типа обменов:

    1. Заменяет код авторизации на долгоживущий токен обновления и краткосрочный токен доступа. Этот обмен происходит, когда пользователь проходит через процесс привязки учетной записи.
    2. Заменяет долгоживущий токен обновления на недолговечный токен доступа. Этот обмен происходит, когда Google нужен новый токен доступа, потому что срок его действия истек.

Выберите поток OAuth 2.0

Хотя неявный поток проще реализовать, Google рекомендует, чтобы токены доступа, выданные неявным потоком, никогда не истекали. Это связано с тем, что пользователь вынужден снова связать свою учетную запись после истечения срока действия токена с неявным потоком. Если вам нужен срок действия токена по соображениям безопасности, мы настоятельно рекомендуем вам использовать вместо этого поток кода авторизации .

Рекомендации по дизайну

В этом разделе описаны требования к дизайну и рекомендации для пользовательского экрана, который вы размещаете для потоков связывания OAuth. После вызова приложением Google на вашей платформе отображается страница входа в систему Google и экран согласия с привязкой учетной записи для пользователя. Пользователь возвращается в приложение Google после того, как дал согласие на привязку учетных записей.

На этом рисунке показаны действия пользователя по привязке своей учетной записи Google к вашей системе аутентификации. На первом снимке экрана показана ссылка на вашу платформу, инициированную пользователем. На втором изображении показан вход пользователя в Google, а на третьем - согласие пользователя и подтверждение для привязки его учетной записи Google к вашему приложению. На последнем снимке экрана показана успешно связанная учетная запись пользователя в приложении Google.
Рисунок 1. Учетная запись, связывающая пользователя с экранами входа в Google и согласия.

Требования

  1. Вы должны сообщить, что учетная запись пользователя будет связана с Google, а не с конкретным продуктом Google, таким как Google Home или Google Assistant.

Рекомендации

Мы рекомендуем вам сделать следующее:

  1. Показать Политику конфиденциальности Google. Включите ссылку на Политику конфиденциальности Google на экране согласия.

  2. Данные для обмена. Используйте ясный и лаконичный язык, чтобы сообщить пользователю, какие данные ему нужны Google и почему.

  3. Четкий призыв к действию. Укажите четкий призыв к действию на экране вашего согласия, например «Примите и установите ссылку». Это связано с тем, что пользователям необходимо понимать, какими данными они должны поделиться с Google, чтобы связать свои учетные записи.

  4. Возможность отмены. Предоставьте пользователям возможность вернуться или отменить, если они решат не переходить по ссылке.

  5. Четкий процесс входа. Убедитесь, что у пользователей есть четкий способ входа в свою учетную запись Google, например поля для имени пользователя и пароля или Вход с помощью Google .

  6. Возможность разорвать связь. Предложите пользователям механизм отмены связи, например URL-адрес настроек их учетных записей на вашей платформе. В качестве альтернативы вы можете добавить ссылку на учетную запись Google, где пользователи могут управлять своей связанной учетной записью.

  7. Возможность смены учетной записи пользователя. Предложите пользователям способ переключения своих учетных записей. Это особенно полезно, если у пользователей обычно несколько учетных записей.

    • Если пользователю необходимо закрыть экран согласия для переключения учетных записей, отправьте в Google исправляемую ошибку, чтобы пользователь мог войти в желаемую учетную запись с привязкой OAuth и неявным потоком.
  8. Включите свой логотип. Отобразите логотип вашей компании на экране согласия. Используйте свои рекомендации по стилю, чтобы разместить свой логотип. Если вы хотите также отображать логотип Google, см. Логотипы и товарные знаки .

Создать проект

Чтобы создать свой проект для использования привязки учетных записей:

  1. Go to the Google API Console.
  2. Нажмите Создать проект .
  3. Введите имя или примите сгенерированное предложение.
  4. Подтвердите или отредактируйте оставшиеся поля.
  5. Нажмите Создать .

Для просмотра идентификатора вашего проекта:

  1. Go to the Google API Console.
  2. Найдите свой проект в таблице на целевой странице. Идентификатор проекта отображается в столбце идентификаторов .

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

  1. Откройте страницу с экраном согласия OAuth в консоли Google API.
  2. При появлении запроса выберите только что созданный проект.
  3. На странице «Экран согласия OAuth» заполните форму и нажмите кнопку «Сохранить».

    Название приложения: название приложения, запрашивающего согласие. Имя должно точно отражать ваше приложение и соответствовать имени приложения, которое пользователи видят в другом месте. Название приложения будет отображаться на экране согласия на привязку учетной записи.

    Логотип приложения: изображение на экране согласия, которое поможет пользователям узнать ваше приложение. Логотип отображается на экране согласия на привязку учетной записи и в настройках учетной записи.

    Электронная почта поддержки: чтобы пользователи могли связаться с вами с вопросами о своем согласии.

    Области действия для API Google: области позволяют вашему приложению получать доступ к личным данным Google вашего пользователя. Для варианта использования привязки учетных записей Google достаточно области по умолчанию (электронная почта, профиль, openid), вам не нужно добавлять какие-либо конфиденциальные области. Обычно рекомендуется запрашивать области постепенно, в то время, когда требуется доступ, а не заранее. Узнать больше .

    Авторизованные домены: чтобы защитить вас и ваших пользователей, Google разрешает только приложениям, которые проходят аутентификацию с помощью OAuth, использовать авторизованные домены. Ссылки ваших приложений должны размещаться в авторизованных доменах. Узнать больше .

    Ссылка на домашнюю страницу приложения : домашняя страница вашего приложения. Должен размещаться в авторизованном домене.

    Ссылка на Политику конфиденциальности приложения: отображается на экране согласия Google Acount Linking. Должен размещаться в авторизованном домене.

    Ссылка на Условия использования приложения (необязательно): должна быть размещена в авторизованном домене.

    Рисунок 1 . Экран согласия на привязку учетной записи Google для фиктивного приложения, Tunery

  4. Отметьте «Статус проверки». Если ваше приложение требует проверки, нажмите кнопку «Отправить на проверку», чтобы отправить заявку на проверку. Дополнительные сведения см. В требованиях к проверке OAuth .

Внедрите свой сервер OAuth

Для поддержки неявного потока OAuth 2.0 ваша служба делает конечную точку авторизации доступной по HTTPS. Эта конечная точка отвечает за аутентификацию и получение согласия пользователей на доступ к данным. Конечная точка авторизации представляет пользовательский интерфейс для входа в систему для ваших пользователей, которые еще не вошли в систему, и записывает согласие на запрошенный доступ.

Когда приложению Google необходимо вызвать один из авторизованных API вашей службы, Google использует эту конечную точку, чтобы получить разрешение от ваших пользователей на вызов этих API от их имени.

Типичный сеанс неявного потока OAuth 2.0, инициированный Google, имеет следующий поток:

  1. Google открывает вашу конечную точку авторизации в браузере пользователя. Пользователь входит в систему, если еще не вошел в систему, и предоставляет Google разрешение на доступ к своим данным с помощью вашего API, если он еще не предоставил разрешение.
  2. Ваш сервис создает токен доступа и возвращает его в Google. Для этого перенаправьте браузер пользователя обратно в Google с токеном доступа, прикрепленным к запросу.
  3. Google вызывает API вашей службы и прикрепляет токен доступа к каждому запросу. Ваша служба проверяет, разрешает ли токен доступа Google доступ к API, а затем выполняет вызов API.

Обработка запросов на авторизацию

Когда приложению Google необходимо выполнить привязку учетной записи через неявный поток OAuth 2.0, Google отправляет пользователя в конечную точку авторизации с запросом, который включает следующие параметры:

Параметры конечной точки авторизации
client_id Идентификатор клиента, который вы присвоили Google.
redirect_uri URL-адрес, на который вы отправляете ответ на этот запрос.
state Бухгалтерская стоимость, которая возвращается в Google без изменений в URI перенаправления.
response_type Тип значения, возвращаемого в ответе. Для неявного потока OAuth 2.0 тип ответа всегда token .
user_locale Настройка языка учетной записи Google в формате RFC5646 , используемая для локализации вашего контента на предпочтительный язык пользователя.

Например, если ваша конечная точка авторизации доступна по адресу https://myservice.example.com/auth , запрос может выглядеть следующим образом:

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token&user_locale=LOCALE

Чтобы конечная точка авторизации могла обрабатывать запросы на вход, выполните следующие действия:

  1. Проверьте значения client_id и redirect_uri чтобы предотвратить предоставление доступа непреднамеренным или неправильно настроенным клиентским приложениям:

    • Убедитесь, что client_id совпадает с идентификатором клиента, который вы присвоили Google.
    • Убедитесь, что URL-адрес, указанный в параметре redirect_uri имеет следующий вид:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  2. Проверьте, вошел ли пользователь в вашу службу. Если пользователь не вошел в систему, завершите процесс входа или регистрации в вашей службе.

  3. Создайте токен доступа, который Google будет использовать для доступа к вашему API. Токеном доступа может быть любое строковое значение, но он должен однозначно представлять пользователя и клиента, для которого предназначен токен, и его нельзя угадывать.

  4. Отправьте HTTP-ответ, который перенаправляет браузер пользователя на URL-адрес, указанный в параметре redirect_uri . Включите во фрагмент URL все следующие параметры:

    • access_token : только что сгенерированный токен доступа.
    • token_type : bearer строки
    • state : неизмененное значение состояния из исходного запроса.

    Ниже приведен пример полученного URL:

    https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

Обработчик перенаправления Google OAuth 2.0 получает токен доступа и подтверждает, что значение state не изменилось. После того, как Google получит токен доступа для вашей службы, Google прикрепляет этот токен к последующим вызовам API вашей службы.

Проверка вашей реализации

Вы можете проверить свою реализацию с помощью инструмента OAuth 2.0 Playground .

В инструменте проделайте следующие шаги:

  1. Щелкните конфигурации чтобы открыть окно конфигурации OAuth 2.0.
  2. В поле потока OAuth выберите Client-side .
  3. В поле Конечные точки OAuth выберите Пользовательский .
  4. Укажите конечную точку OAuth 2.0 и идентификатор клиента, присвоенный Google, в соответствующих полях.
  5. В разделе Шаг 1 не выбирайте области Google. Вместо этого оставьте это поле пустым или введите область действия, действительную для вашего сервера (или произвольную строку, если вы не используете области действия OAuth). Когда вы закончите, нажмите « Авторизовать API» .
  6. В разделах Шаг 2 и Шаг 3 просмотрите поток OAuth 2.0 и убедитесь, что каждый шаг работает должным образом.

Вы можете проверить свою реализацию с помощью инструмента демонстрации связывания аккаунтов Google .

В инструменте проделайте следующие шаги:

  1. Нажмите кнопку Войти через Google .
  2. Выберите учетную запись, которую вы хотите связать.
  3. Введите идентификатор службы.
  4. При желании введите одну или несколько областей, для которых вы запрашиваете доступ.
  5. Щелкните « Начать демонстрацию» .
  6. При появлении запроса подтвердите, что вы можете согласиться, и отклоните запрос на установление связи.
  7. Подтвердите, что вы перенаправлены на свою платформу.