Авторизация через google android

Обновлено: 30.09.2022

Этот пакет устарел, вместо него используется поставщик Google AuthSession. Ознакомьтесь с руководствами по аутентификации Google, чтобы узнать, как перенести свое приложение сегодня.

expo-google-app-auth обеспечивает интеграцию аутентификации Google для приложений Expo с помощью защищенного системного веб-браузера с собственным expo-app-auth . Это лучше, чем WebView, потому что вы можете повторно использовать учетные данные, сохраненные на устройстве. Этот модуль использует PKCE для безопасной собственной аутентификации. Вам не нужно определять конфигурацию поставщика, поскольку этот пакет использует автоматическое обнаружение Open ID Connect.

Совместимость с платформами

Для управляемых приложений вам потребуется запустить expo install expo-google-app-auth . Чтобы использовать его в чистом приложении React Native, вам нужно будет запустить npx pod-install и выполнить новую сборку после установки пакета, потому что эта библиотека использует expo-app-auth в качестве зависимости.

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

ИмяТипОписание
config LogInConfig Используется для входа в ваше приложение Google.
ИмяТипОписание
iosClientId строка | undefined Идентификатор клиента iOS, зарегистрированный в Google для использования в приложении Expo Go.
androidClientId string | undefined Идентификатор клиента Android, зарегистрированный в Google для использования в приложении Expo Go.
iosStandaloneAppClientId string | undefined Идентификатор клиента iOS, зарегистрированный в Google для использования в отдельном приложении.
androidStandaloneAppClientId string | undefined Идентификатор клиента Android, зарегистрированный в Google для использования в отдельном приложении.
clientId string | undefined Если идентификатор клиента, соответствующий платформе, не указан, вместо него будет использоваться этот.
language string | undefined Код языка ISO ex ( fr , en-US ), это выберет язык, используемый в пользовательском интерфейсе входа в Google. По умолчанию используется наилучшая оценка, основанная на браузере пользователя.
loginHint string | undefined Если адрес электронной почты пользователя известен заранее, его можно указать в качестве параметра по умолчанию. Это соответствует реквизиту OAuth login_hint.
scopes string[] = ['profile', 'email'] Области действия, запрашиваемые у Google для этого входа (дополнительная информация здесь)
redirectUrl string | undefined По умолчанию $:/oauth2redirect/google . При желании вы можете определить свой собственный URL-адрес перенаправления, просто обязательно ознакомьтесь с примечанием ниже.

Примечание относительно redirectUrl . Если вы решите указать собственный redirectUrl , он должен начинаться со значения, возвращаемого AppAuth.OAuthRedirect . Таким образом, метод будет работать правильно и последовательно, независимо от того, тестируете ли вы его в Expo Go или в качестве отдельного приложения.

ИмяТипОписание
logInResult Promise Разрешается в результаты вашей попытки входа в систему.
ИмяТипОписание
тип 'отмена' | 'success' Обозначает сводку пользовательского события.
accessToken string | undefined Используется для доступа к данным из Google, аннулирование для «выхода из системы»
idToken string | null Идентификатор токена
refreshToken string | null Обновить другие токены.
user GoogleUser Объект с данными, касающимися аутентифицированного пользователь.
ИмяТипОписание
id строка | undefined ID пользователя
имя string | undefined имя пользователя
givenName string | undefined имя пользователя
familyName string | undefined фамилия пользователя
photoUrl string | undefined фото для пользователя
электронная почта string | undefined адрес электронной почты пользователя
ИмяТипОписание
параметры LogInConfig & Используется для выхода из приложения Google.
ИмяТипОписание
accessToken string Предоставляется, когда пользователь проходит аутентификацию в вашем приложении Google.
iosClientId string | undefined Идентификатор клиента iOS, зарегистрированный в Google для использования в приложении Expo Go.
androidClientId string | undefined Идентификатор клиента Android, зарегистрированный в Google для использования в приложении Expo Go.
iosStandaloneAppClientId string | undefined Идентификатор клиента iOS, зарегистрированный в Google для использования в отдельном приложении.
androidStandaloneAppClientId string | undefined Идентификатор клиента Android, зарегистрированный в Google для использования в отдельном приложении.
scopes string[] = [' profile', 'email'] Области действия, запрашиваемые у Google для этого входа (дополнительная информация здесь)

В приложении Expo Go вы можете использовать только вход через браузер (на самом деле это работает очень хорошо, потому что повторно использует учетные данные, сохраненные в вашем системном браузере).

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

  • Перейти на страницу учетных данных
  • Создайте приложение для своего проекта, если вы еще этого не сделали.
  • После этого нажмите "Создать учетные данные", а затем "Идентификатор клиента OAuth". Вам будет предложено указать название продукта на экране согласия, сделайте это.
  • Выберите «Приложение iOS» в качестве типа приложения. Если хотите, дайте ему имя (например, "Разработка для iOS").
  • Используйте host.exp.exponent в качестве идентификатора пакета.
  • Нажмите "Создать"
  • Теперь вы увидите модальное окно с идентификатором клиента.
  • Идентификатор клиента используется в параметре iosClientId для Google.loginAsync (см. пример кода ниже).
  • Выберите «Приложение Android» в качестве типа приложения. Если хотите, дайте ему имя (например, "Разработка Android").
  • Выполнить openssl rand -base64 32 | openssl sha1 -c в вашем терминале, он выведет строку, которая выглядит как A1:B2:C3, но длиннее. Скопируйте результат в буфер обмена.
  • Вставьте результат предыдущего шага в текстовое поле "Отпечаток сертификата подписи".
  • Используйте host.exp.exponent в качестве "Имени пакета".
  • Нажмите "Создать"
  • Теперь вы увидите модальное окно с идентификатором клиента.
  • Идентификатор клиента используется в параметре androidClientId для Google.loginAsync (см. пример кода ниже).

Если вы хотите использовать Google Sign In для отдельного приложения, выполните следующие действия. Эти шаги предполагают, что вы уже работаете с приложением Expo Go. Если вы уже создали ключ API для Карт Google, пропустите шаги с 3 по 8 включительно.

  • Получите ключ API Google для своего приложения: пропустите этот шаг, если он у вас уже есть, например: для Карт Google
    1. Создайте отдельное приложение и загрузите APK-файл или найдите уже созданное.
    2. Перейдите к учетным данным разработчика Google.
    3. Нажмите «Создать учетные данные», затем «Ключ API» и, наконец, нажмите «ОГРАНИЧИТЬ КЛЮЧ» в появившемся модальном окне.
    4. Нажмите переключатель приложений Android в разделе Ограничение ключа, затем нажмите + Добавить имя пакета и отпечаток пальца.
    5. Добавьте пакет android.package из app.json (например, ca.brentvatne.growlerprowler ) в поле имени пакета.
    6. Запустите expo fetch:android:hashes .
    7. Возьмите отпечаток сертификата Google из предыдущего шага и вставьте его в поле отпечатка сертификата SHA-1.
    8. Нажмите "Сохранить".
  • Получите идентификатор клиента OAuth для своего приложения
    1. Создайте отдельное приложение и загрузите APK-файл или найдите уже созданное.
    2. Перейдите к учетным данным разработчика Google.
    3. Нажмите "Создать учетные данные", затем "Идентификатор клиента OAuth" и выберите переключатель Android.
    4. Запустите expo fetch:android:hashes .
    5. Возьмите отпечаток сертификата Google из предыдущего шага и вставьте его в поле Отпечаток сертификата подписи.
    6. Добавьте пакет android.package из app.json (например, ca.brentvatne.growlerprowler ) в поле имени пакета.
    7. Нажмите "Создать".
  • Добавьте конфигурацию в свое приложение
    1. Создайте отдельное приложение и загрузите APK-файл или найдите уже созданное.
    2. Перейдите к учетным данным разработчика Google и найдите свой ключ API.
    3. Откройте app.json и добавьте свой ключ API Google в android.config.googleSignIn.apiKey .
    4. Запустите expo fetch:android:hashes .
    5. Возьмите хэш сертификата Google из предыдущего шага в app.json в android.config.googleSignIn.certificateHash .
    6. При использовании Google.logInAsync(..) передайте идентификатор клиента OAuth в качестве параметра androidStandaloneAppClientId.
    7. Перестройте отдельное приложение.

Обратите внимание: если вы включили службу подписи приложений Google Play, вам нужно будет получить их сертификат подписи приложения в рабочей среде, а не сертификат загрузки, возвращенный expo fetch:android:hashes . Вы можете сделать это, захватив подпись в Play Console -> Ваше приложение -> Управление выпусками -> Подписание приложений, а затем перейдя на панель управления API -> Учетные данные и добавив подпись к существующим учетным данным.

Если вы хотите использовать собственный вход для отдельного приложения, выполните следующие действия. Эти шаги предполагают, что вы уже работаете с приложением Expo Go.

  1. Добавьте bundleIdentifier в файл app.json, если у вас его еще нет.
  2. Откройте в браузере учетные данные разработчика Google.
  3. Нажмите «Создать учетные данные», затем «Идентификатор клиента OAuth» и выберите «iOS».
  4. Укажите свой bundleIdentifier в поле Bundle ID, затем нажмите "Создать".
  5. Добавьте указанную схему URL-адресов iOS в файл app.json в разделе ios.config.googleSignIn.reservedClientId.
  6. При использовании Google.logInAsync укажите идентификатор клиента OAuth в качестве параметра iosStandaloneAppClientId.
  7. Перестройте отдельное приложение.

Если вам нужно получить доступ к API Google с авторизацией пользователя, вам необходимо передать дополнительный идентификатор веб-клиента. Это добавит accessToken, idToken, refreshToken и serverAuthCode в объект ответа, который вы можете использовать на своем сервере с секретом идентификатора клиента.

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

Прежде чем вы потеряли

Используя Firebase Android BoM , объявите для библиотеки Firebase Authentication Android в файле Gradle вашего модуля (на уровне приложения) (обычно app/build.gradle ).

Кроме того, в рамках аутентификации Firebase вам необходимо добавить SDK сервисов Google Play в свое приложение.

Джава

Используя Firebase Android BoM, ваше приложение всегда будет использовать обновленную версию библиотеки Firebase Android.

(Альтернатива) Объявите зависимость библиотеки Firebase безиспользования BoM

Если вы решите не использовать Firebase BoM, вы должны установить все версии библиотек Firebase в зависимости от зависимостей.

Обратите внимание: если вы используете несколько библиотек Firebase в своем приложении, мы рекомендуем использовать BoM для управления версиями библиотек, что обеспечивает совместимость со всеми версиями

.

Котлин+КТХ

Используя Firebase Android BoM, ваше приложение всегда будет использовать обновленную версию библиотеки Firebase Android.

(Альтернатива) Объявите зависимость библиотеки Firebase безиспользования BoM

Если вы решите не использовать Firebase BoM, вы должны установить все версии библиотек Firebase в зависимости от зависимостей.

Обратите внимание: если вы используете несколько библиотек Firebase в своем приложении, мы рекомендуем использовать BoM для управления версиями библиотек, что обеспечивает совместимость со всеми версиями

.
  1. В консоли Firebase раздел "Аутентификация" .
  2. Нажмите кнопку "Сохранить".

Авторизоваться с помощью Firebase

Джава

Котлин+КТХ

  1. Открыть страницу учетных данных в консоли GCP.
  2. Идентификатор клиента типа веб-приложения — это идентификатор клиента OAuth 2.0 вашего внутреннего сервера.

Джава

Котлин+КТХ

Джава

Котлин+КТХ

Джава

Котлин+КТХ

Джава

Котлин+КТХ

Следующие шаги

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

В своих приложениях вы можете получить информацию о профиле пользователя из объекта FirebaseUser . См. Управление пользователями .

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

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

Чтобы выйти из системы, вызовите signOut :

Джава

Котлин+КТХ

Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

Если вы настроили двухэтапную аутентификацию, вы можете использовать приложение Google Authenticator для получения кодов. Вы по-прежнему можете получать коды без подключения к Интернету или мобильной связи. Подробнее о двухэтапной аутентификации.

Требования к приложению

Чтобы использовать Google Authenticator на устройстве Android, вам необходимо:

Скачать аутентификатор

Настроить аутентификатор

  1. На устройстве Android перейдите в свой аккаунт Google.
  2. Вверху коснитесь вкладки "Безопасность".
    Если сначала вы не видите вкладку "Безопасность", пролистайте все вкладки, пока не найдете ее.
  3. В разделе "Вход в Google" нажмите "Двухэтапная аутентификация". Возможно, вам потребуется войти в систему.
  4. В разделе "Приложение для аутентификации" нажмите "Настроить".
    На некоторых устройствах в разделе "Приложение Authenticator" нажмите "Начать".
  5. Следуйте инструкциям на экране.

Получить коды на новый телефон

Чтобы перенести коды аутентификатора на новый телефон, вам необходимо:

  • Ваш старый телефон Android с кодами Google Authenticator
  • Последняя версия приложения Google Authenticator, установленная на вашем старом телефоне.
  • Ваш новый телефон
  1. На новом телефоне установите приложение Google Authenticator.
  2. В приложении Google Authenticator нажмите "Начать".
  3. Внизу нажмите Импортировать существующие аккаунты?
  4. На старом телефоне создайте QR-код:
    1. В приложении Authenticator нажмите "Еще" Перенос учетных записей Экспорт учетных записей.
    2. Выберите аккаунты, которые хотите перенести на новый телефон. Затем нажмите «Далее». Если вы перенесете несколько аккаунтов, ваш старый телефон может создать более одного QR-кода.

    После того как вы отсканируете свои QR-коды, вы получите подтверждение того, что ваши учетные записи Authenticator перенесены.

    Совет. Если ваша камера не может отсканировать QR-код, возможно, информации слишком много. Повторите попытку экспорта с меньшим количеством аккаунтов.

    1. На устройстве Android перейдите в свой аккаунт Google.
    2. Вверху нажмите "Безопасность".
    3. В разделе "Вход в Google" нажмите "Двухэтапная аутентификация". Возможно, вам потребуется войти в систему.
    4. В разделе "Доступные вторые шаги" найдите "Приложение для аутентификации" и нажмите "Изменить телефон".
    5. Следуйте инструкциям на экране.

    Распространенные проблемы

    Если ваш код неверен, подтвердите:

    • Вы ввели код до истечения срока его действия.
    • Время на вашем устройстве соответствует вашему часовому поясу.

    Если ваш код по-прежнему неверен, синхронизируйте свое устройство Android:

    1. На устройстве Android откройте приложение Google Authenticator.
    2. В правом верхнем углу выберите "Еще". Корректировка времени для кодов. Синхронизировать сейчас.
    3. На следующем экране приложение подтверждает, что время синхронизировано. Вы можете использовать свои проверочные коды для входа.
      • Синхронизация влияет только на внутреннее время вашего приложения Google Authenticator. Настройки даты и времени на вашем устройстве не изменятся.

    Используйте Authenticator для нескольких аккаунтов или устройств

    Authenticator может выдавать коды для нескольких аккаунтов с одного мобильного устройства. У каждого аккаунта Google должен быть свой секретный ключ.

    Чтобы настроить дополнительные аккаунты:

    1. Включите двухэтапную аутентификацию для каждого аккаунта. Подробнее о двухэтапной аутентификации...
    2. Используйте одно и то же приложение Authenticator для каждого аккаунта.

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

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

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

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

    Сторонние приложения и службы создаются компаниями или разработчиками, не являющимися Google.

    1. Перейдите к приложению или сервису, которому вы доверяете.
    2. На странице входа выберите "Войти через Google", "Войти через Google" или "Присоединиться к Google".

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

    Прекратить вход с помощью Google

    Если вы больше не хотите использовать свой аккаунт Google для входа в стороннее приложение или службу, вы можете закрыть доступ.

    1. Откройте свой аккаунт Google. Возможно, вам потребуется войти в систему.
    2. Выберите Безопасность.
    3. Прокрутите вниз до раздела "Вход на другие сайты" и выберите "Войти с помощью Google".
    4. Выберите приложение или службу, доступ к которым вы хотите удалить.

    Важно! Если вы закроете доступ к аккаунту из стороннего приложения или службы, они могут сохранить предоставленную вами информацию из:

    • Когда вы вошли в свой аккаунт Google
    • Когда вы предоставили дополнительному аккаунту Google доступ к приложению или сервису

    Обмен данными с третьими лицами

    Улучшена безопасность аккаунтов, подключенных к Google

    Наша технология безопасности помогает обнаруживать подозрительные события, чтобы лучше защитить ваш аккаунт Google. С помощью Cross-Account Protection мы можем делиться уведомлениями безопасности о подозрительных событиях с приложениями и службами, которые вы подключили к своей учетной записи Google. Таким образом, сторонние приложения и службы могут использовать обнаружение подозрительных событий Google, чтобы обеспечить вашу безопасность в Интернете.

    Как работает защита нескольких аккаунтов

    Чтобы получать уведомления безопасности от Google, приложение или служба должны:

    1. Участвуйте в защите нескольких аккаунтов.
    2. Подключитесь к своему аккаунту Google. Если к вашему аккаунту Google подключено приложение или служба, вы можете:
    3. Получив доступ к вашему аккаунту Google

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

    • Аккаунт взломан
    • Аккаунт заблокирован или отключен
    • Выполняется выход из аккаунта на ваших устройствах или в браузерах

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

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

    Управление защитой нескольких аккаунтов

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

    Если вы больше не хотите использовать приложение или службы, участвующие в программе Cross-Account Protection, вы можете лишить их доступа к вашему аккаунту.

    Читайте также: