Мы прекращая Google для входа в систему JavaScript платформенной библиотеки для веб - сайтов . Для проверки подлинности и пользователь входа в систему , использовать новые Google Identity Services SDKs как для Web и Android вместо.

Справочник по клиенту JavaScript для входа в Google

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

Если вы столкнетесь с какой-либо проблемой при использовании библиотеки, сообщите об этом в наш репозиторий GitHub .

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

Загрузите библиотеку платформы Google API, чтобы создать объект gapi :

<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>

После загрузки библиотеки платформы загрузите библиотеку auth2 :

function init() {
  gapi.load('auth2', function() {
    /* Ready. Make a call to gapi.auth2.init or some other API */
  });
}

gapi.auth2.init ( params )

Инициализирует объект GoogleAuth . Вы должны вызвать этот метод перед вызовом gapi.auth2.GoogleAuth .

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

Аргументы
params Объект, содержащий пары ключ-значение данных конфигурации клиента. См. gapi.auth2.ClientConfig для получения информации о различных настраиваемых свойствах. Например:
{
  client_id: 'CLIENT_ID.apps.googleusercontent.com'
}
Возврат
gapi.auth2.GoogleAuth Объект gapi.auth2.GoogleAuth . Используйте метод then (), чтобы получить обещание, которое будет разрешено, когда объект gapi.auth2.GoogleAuth инициализацию.

GoogleAuth.then ( onInit , onError )

Вызывает функцию onInit когда объект GoogleAuth полностью инициализирован. Если при инициализации возникает ошибка (это может произойти в старых неподдерживаемых браузерах), onError будет onError функция onError .

Аргументы
onInit Функция, вызываемая с объектом GoogleAuth когда он полностью инициализирован.
onError Функция GoogleAuth с объектом, содержащим свойство error , если не удалось инициализировать GoogleAuth .
Возврат
Обещать Promise , которое выполняется, когда функция onInit завершена, или отклоняется, если возникла ошибка инициализации. Он разрешается с помощью возвращенного значения из функции onInit , если таковая имеется.

Коды ошибок

idpiframe_initialization_failed
Не удалось инициализировать необходимый iframe от Google, например, из-за неподдерживаемой среды. Свойство details предоставит дополнительную информацию о возникшей ошибке.

gapi.auth2.ClientConfig

Интерфейс, представляющий различные параметры конфигурации для метода gapi.auth2.init .

Параметры
client_id string Обязательный. Идентификатор клиента приложения, найденный и созданный в Google Developers Console.
cookie_policy string Домены, для которых создаются файлы cookie для входа. Либо URI, single_host_origin , либо none . Если не указано single_host_origin по умолчанию используется single_host_origin .
scope string Запрашиваемые области в виде строки, разделенной пробелами. Необязательно, если для fetch_basic_profile не задано значение false.
fetch_basic_profile boolean Получать основную информацию профиля пользователя при входе в систему. Добавляет «профиль», «электронная почта» и «openid» в запрошенные области. Верно, если не указано.
hosted_domain string Домен G Suite, к которому должны принадлежать пользователи для входа в систему. Он подвержен изменениям со стороны клиентов, поэтому обязательно проверьте свойство размещенного домена возвращенного пользователя. Используйте GoogleUser.getHostedDomain () на клиенте и утверждение hd в токене идентификатора на сервере, чтобы убедиться, что домен соответствует вашим ожиданиям.
ux_mode string Режим UX, используемый для входа в систему. По умолчанию он открывает поток согласия во всплывающем окне. Допустимые значения: popup и redirect .
redirect_uri string При использовании ux_mode='redirect' этот параметр позволяет вам переопределить redirect_uri по умолчанию, который будет использоваться в конце потока согласия. По умолчанию redirect_uri - это текущий URL без параметров запроса и хеш-фрагмента.

Аутентификация

GoogleAuth - это одноэлементный класс, который предоставляет методы, позволяющие пользователю войти в систему с учетной записью Google, получить текущий статус входа в систему, получить определенные данные из профиля пользователя Google, запросить дополнительные области и выйти из текущей учетной записи.

gapi.auth2.getAuthInstance ()

Возвращает объект GoogleAuth . Перед вызовом этого метода необходимо инициализировать объект GoogleAuth с помощью gapi.auth2.init() .

Возврат
gapi.auth2.GoogleAuth Объект gapi.auth2.GoogleAuth . Используйте этот объект для вызова gapi.auth2.GoogleAuth .

GoogleAuth.isSignedIn.get ()

Возвращает, вошел ли текущий пользователь в систему.

Возврат
Логический GoogleAuth true если пользователь GoogleAuth в систему, или значение false если пользователь вышел из системы или объект GoogleAuth не инициализирован.

GoogleAuth.isSignedIn.listen (слушатель)

Следите за изменениями в состоянии входа текущего пользователя.

Аргументы
listener Функция, принимающая логическое значение. listen() передает этой функции значение true когда пользователь входит в систему, и false когда пользователь выходит из системы.

GoogleAuth.signIn ()

Входит в систему с параметрами, указанными в gapi.auth2.init() .

Возврат
Обещать Promise , которое выполняется экземпляром GoogleUser когда пользователь успешно аутентифицируется и предоставляет запрошенные области, или отклоняется с помощью объекта, содержащего свойство error если произошла ошибка (коды ошибок см. Ниже).

Коды ошибок

См. GoogleAuth.signIn( options ) .

GoogleAuth.signIn ( options )

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

Аргументы
options Либо:
  • Объект gapi.auth2.SignInOptions содержащий пары "ключ-значение" параметров входа. Например:
    {
      scope: 'profile email'
    }
  • Экземпляр gapi.auth2.SigninOptionsBuilder . Например:
    options = new gapi.auth2.SigninOptionsBuilder();
    options.setAppPackageName('com.example.app');
    options.setFetchBasicProfile(True);
    options.setPrompt('select_account');
    options.setScope('profile').setScope('email');
Возврат
Обещать Promise , которое выполняется экземпляром GoogleUser когда пользователь успешно аутентифицируется и предоставляет запрошенные области, или отклоняется с помощью объекта, содержащего свойство error если произошла ошибка (коды ошибок см. Ниже).

Коды ошибок

popup_closed_by_user
Пользователь закрыл всплывающее окно, прежде чем завершить процесс входа.
access_denied
Пользователь отказал в разрешении для требуемых областей.
immediate_failed
Ни один пользователь не может быть выбран автоматически без запроса на получение согласия. signIn ошибка при использовании signIn с параметром prompt: 'none' . Эту опцию не обязательно использовать, поскольку gapi.auth2.init автоматически войдет в систему, если ранее во время предыдущего сеанса был выполнен вход.

gapi.auth2.SignInOptions

Интерфейс, представляющий различные параметры конфигурации для GoogleAuth.signIn( options ) .

Параметры
prompt string Принудительно устанавливает определенный режим для потока согласия. По желанию.
Возможные значения:
  • consent
    Сервер авторизации запрашивает у пользователя согласие перед возвратом информации в приложение.
  • select_account
    Сервер авторизации предлагает пользователю выбрать учетную запись Google. Это позволяет пользователю, имеющему несколько учетных записей, выбирать среди нескольких учетных записей, для которых у них могут быть текущие сеансы.
  • none ( не рекомендуется )
    Сервер авторизации не будет отображать никаких экранов аутентификации или согласия пользователя; он вернет ошибку, если пользователь еще не прошел аутентификацию и ранее не давал согласия на запрошенные области.
    Поскольку gapi.auth2.init автоматически gapi.auth2.init вход пользователя в приложение, если он был выполнен ранее, вызов signIn({prompt: 'none'}) обычно signIn({prompt: 'none'}) ошибкой.
scope string Области для запроса в виде строки, разделенной пробелами, поверх областей, определенных в параметрах gapi.auth2.init . Необязательно, если для fetch_basic_profile не задано значение false.
ux_mode string Режим UX, используемый для входа в систему. По умолчанию он открывает поток согласия во всплывающем окне. Допустимые значения: popup и redirect .
redirect_uri string При использовании ux_mode='redirect' этот параметр позволяет вам переопределить redirect_uri по умолчанию, который будет использоваться в конце потока согласия. По умолчанию redirect_uri - это текущий URL без параметров запроса и хеш-фрагмента.

GoogleAuth.signOut ()

Выписывает текущий аккаунт из приложения.

Возврат
Обещать Promise , которое выполняется, когда пользователь вышел из системы.

GoogleAuth.disconnect ()

Отменяет все области, предоставленные пользователем.

GoogleAuth.grantOfflineAccess ( options )

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

Аргументы
options Объект gapi.auth2.OfflineAccessOptions содержащий пары параметров "ключ-значение". Например:
{
  scope: 'profile email'
}
Возврат
Обещать Promise , которое выполняется, когда пользователь предоставляет запрошенные области, передавая объект, содержащий код авторизации, обработчику выполнения Promise . Например:
auth2.grantOfflineAccess().then(function(resp) {
  var auth_code = resp.code;
});

Коды ошибок

popup_closed_by_user
Пользователь закрыл всплывающее окно до завершения потока согласия.
access_denied
Пользователь отказал в разрешении для требуемых областей.
immediate_failed
Ни один пользователь не может быть выбран автоматически без запроса на получение согласия. signIn ошибка при использовании signIn с параметром prompt: 'none' . Эту опцию не обязательно использовать, поскольку gapi.auth2.init автоматически войдет в систему, если ранее во время предыдущего сеанса был выполнен вход.

gapi.auth2.OfflineAccessOptions

Интерфейс, представляющий различные параметры конфигурации для GoogleAuth.grantOfflineAccess( options ) .

Параметры
prompt string Принудительно устанавливает определенный режим для потока согласия. По желанию.
Возможные значения:
  • consent
    Сервер авторизации запрашивает у пользователя согласие перед возвратом информации в приложение.
  • select_account
    Сервер авторизации предлагает пользователю выбрать учетную запись Google. Это позволяет пользователю, имеющему несколько учетных записей, выбирать среди нескольких учетных записей, для которых у них могут быть текущие сеансы.
scope string Области для запроса в виде строки, разделенной пробелами, поверх областей, определенных в параметрах gapi.auth2.init . Необязательно, если для fetch_basic_profile не задано значение false.

GoogleAuth.attachClickHandler ( container , options , при onsuccess , при onfailure )

Присоединяет поток входа к обработчику кликов указанного контейнера.

Аргументы
container Идентификатор или ссылка на элемент div к которому нужно прикрепить обработчик кликов.
options Объект, содержащий пары параметров "ключ-значение". См. GoogleAuth.signIn () .
onsuccess Функция, вызываемая после завершения входа.
onfailure Функция, вызываемая в случае сбоя входа.

Пользователи

Объект GoogleUser представляет одну учетную запись пользователя. Объекты GoogleUser обычно получаются путем вызова GoogleAuth.currentUser.get () .

GoogleAuth.currentUser.get ()

Возвращает объект GoogleUser , представляющий текущего пользователя. Обратите внимание, что во вновь инициализированном экземпляре GoogleAuth текущий пользователь не установлен. Используйте метод currentUser.listen() или GoogleAuth.then() чтобы получить инициализированный экземпляр GoogleAuth .

Возврат
GoogleUser Текущий пользователь

GoogleAuth.currentUser.listen ( listener )

Следите за изменениями в currentUser.

Аргументы
listener Функция, которая принимает параметр GoogleUser . listen передает этой функции экземпляр GoogleUser при каждом изменении currentUser .

GoogleUser.getId ()

Получите строку уникального идентификатора пользователя.

Возврат
Нить Уникальный идентификатор пользователя

GoogleUser.isSignedIn ()

Возвращает true, если пользователь вошел в систему.

Возврат
Логический Истинно, если пользователь вошел в систему

GoogleUser.getHostedDomain ()

Получите домен G Suite пользователя, если пользователь вошел в систему с учетной записью G Suite.

Возврат
Нить Домен G Suite пользователя

GoogleUser.getGrantedScopes ()

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

Возврат
Нить Объемы, предоставленные пользователем

GoogleUser.getBasicProfile ()

Получите основную информацию профиля пользователя.

Возврат
gapi.auth2.BasicProfile Вы можете получить свойства gapi.auth2.BasicProfile с помощью следующих методов:
  • BasicProfile.getId ()
  • BasicProfile.getName ()
  • BasicProfile.getGivenName ()
  • BasicProfile.getFamilyName ()
  • BasicProfile.getImageUrl ()
  • BasicProfile.getEmail ()

GoogleUser.getAuthResponse (includeAuthorizationData)

Получите объект ответа из сеанса аутентификации пользователя.

Аргументы
includeAuthorizationData Необязательно: логическое значение, указывающее, всегда ли возвращать маркер доступа и области. По умолчанию токен доступа и запрошенные области не возвращаются, если fetch_basic_profile имеет значение true (значение по умолчанию) и дополнительные области не запрашиваются.
Возврат
gapi.auth2.AuthResponse Объект gapi.auth2.AuthResponse .

GoogleUser.reloadAuthResponse ()

Принудительно обновляет токен доступа, а затем возвращает Promise для нового AuthResponse.

Возврат
Promise Promise , которое выполняется с помощью перезагруженного gapi.auth2.AuthResponse при перезагрузке токена OAuth, выполнено.

gapi.auth2.AuthResponse

Ответ, возвращаемый при вызове GoogleUser.getAuthResponse( includeAuthorizationData ) или GoogleUser.reloadAuthResponse() .

Характеристики
access_token string Маркер доступа предоставлен.
id_token string Идентификационный токен предоставлен.
scope string Области, предоставленные в токене доступа.
expires_in number Количество секунд до истечения срока действия токена доступа.
first_issued_at number Отметка времени, когда пользователь впервые предоставил запрошенные области.
expires_at number Отметка времени, когда истекает срок действия токена доступа.

GoogleUser.hasGrantedScopes ( scopes )

Возвращает true, если пользователь предоставил указанные области.

Аргументы
scopes Строка областей, разделенных пробелами.
Возврат
Логический Верно, если были предоставлены объемы

GoogleUser.grant ( options )

Запросить дополнительные области для пользователя.

См. GoogleAuth.signIn() для получения списка параметров и кода ошибки.

GoogleUser.grantOfflineAccess ( options )

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

Аргументы
options Объект gapi.auth2.OfflineAccessOptions содержащий пары параметров "ключ-значение". Например:
{
  scope: 'profile email'
}

GoogleUser.disconnect ()

Отменяет все области, которые пользователь предоставил приложению.

Элементы пользовательского интерфейса

gapi.signin2.render ( id , options )

Отображает кнопку входа в элемент с заданным идентификатором, используя параметры, указанные в объекте options .

Аргументы
id Идентификатор элемента, в котором будет отображаться кнопка входа.
options Объект, содержащий параметры, используемые для визуализации кнопки. Например:
{
  scope: 'email',
  width: 200,
  height: 50,
  longtitle: true,
  theme: 'dark',
  onsuccess: handleSuccess,
  onfailure: handleFailure
}
Вы можете указать следующие параметры:
Параметры
сфера Области, запрашиваемые при входе пользователя в систему (по умолчанию: profile ).
ширина Ширина кнопки в пикселях (по умолчанию: 120 ).
высота Высота кнопки в пикселях (по умолчанию: 36 ).
longtitle Отображать длинные ярлыки, такие как «Войти через Google», а не «Войти» (по умолчанию: false ). При использовании длинных заголовков следует увеличить ширину кнопки по сравнению с ее значением по умолчанию.
тема Цветовая тема кнопки: light или dark (по умолчанию: light ).
на успех Функция обратного вызова, вызываемая при успешном gapi.auth2.GoogleUser пользователя. Эта функция должна принимать один аргумент: экземпляр gapi.auth2.GoogleUser (по умолчанию: none).
при отказе Функция обратного вызова, вызываемая при сбое входа. Эта функция не принимает аргументов (по умолчанию: нет).

Передовой

gapi.auth2.authorize ( params , callback )

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

Некоторые варианты использования, в которых может быть полезен этот метод, включают:

  • Ваше приложение должно запросить конечную точку Google API только один раз, например, чтобы загрузить любимые видео пользователя на YouTube при первом входе в систему.
  • У вашего приложения есть собственная инфраструктура управления сеансом, и ему требуется только один токен идентификатора, чтобы идентифицировать пользователя в вашем бэкэнде.
  • На одной странице используются несколько идентификаторов клиентов.
Аргументы
params Объект, содержащий пары "ключ-значение" данных конфигурации. См. gapi.auth2.AuthorizeConfig для получения информации о различных настраиваемых свойствах. Например:
{
  client_id: 'CLIENT_ID.apps.googleusercontent.com',
  scope: 'email profile openid',
  response_type: 'id_token permission'
}
callback Функция, вызываемая с объектом gapi.auth2.AuthorizeResponse после того, как запрос был выполнен (успешно или с gapi.auth2.AuthorizeResponse ).

Пример

gapi.auth2.authorize({
  client_id: 'CLIENT_ID.apps.googleusercontent.com',
  scope: 'email profile openid',
  response_type: 'id_token permission'
}, function(response) {
  if (response.error) {
    // An error happened!
    return;
  }
  // The user authorized the application for the scopes requested.
  var accessToken = response.access_token;
  var idToken = response.id_token;
  // You can also now use gapi.client to perform authenticated requests.
});

Коды ошибок

idpiframe_initialization_failed
Не удалось инициализировать необходимый iframe от Google, например, из-за неподдерживаемой среды. Свойство details предоставит дополнительную информацию о возникшей ошибке.
popup_closed_by_user
Пользователь закрыл всплывающее окно, прежде чем завершить процесс входа.
access_denied
Пользователь отказал в разрешении для требуемых областей.
immediate_failed
Ни один пользователь не может быть выбран автоматически без запроса на получение согласия. signIn ошибка при использовании signIn с параметром prompt: 'none'

gapi.auth2.AuthorizeConfig

Интерфейс, представляющий различные параметры конфигурации для метода gapi.auth2.authorize .

Характеристики
client_id string Обязательно . Идентификатор клиента приложения, найденный и созданный в Google Developers Console.
scope string Обязательно . Запрашиваемые области в виде строки, разделенной пробелами.
response_type string Список типов ответов, разделенных пробелами. По умолчанию - 'permission' . Возможные значения:
  • id_token , чтобы получить id_token идентификатора
  • permission (или token ) на получение токена доступа
  • code , чтобы получить код авторизации
prompt string Принудительно устанавливает определенный режим для потока согласия. Возможные значения:
  • consent
    Сервер авторизации запрашивает у пользователя согласие перед возвратом информации в приложение.
  • select_account
    Сервер авторизации предлагает пользователю выбрать учетную запись Google. Это позволяет пользователю, имеющему несколько учетных записей, выбирать среди нескольких учетных записей, для которых у них могут быть текущие сеансы.
  • none
    Сервер авторизации не будет отображать никаких экранов аутентификации или согласия пользователя; он вернет ошибку, если пользователь еще не прошел аутентификацию и ранее не давал согласия на запрошенные области.
    Если code запрашивается в качестве типа ответа, возвращенный код можно будет обменять только на access_token , но не на refresh_token .
cookie_policy string Домены, для которых создаются файлы cookie для входа. Либо URI, single_host_origin , либо none . Если не указано single_host_origin по умолчанию используется single_host_origin .
hosted_domain string Домен G Suite, к которому должны принадлежать пользователи для входа в систему. Он подвержен изменениям со стороны клиентов, поэтому обязательно проверьте свойство размещенного домена возвращенного пользователя.
login_hint string Электронная почта или идентификатор пользователя пользователя, которого нужно предварительно выбрать в процессе входа. Это может быть изменено пользователем, если не используется prompt: "none" .
include_granted_scopes boolean Следует ли запрашивать токен доступа, который включает все области действия, ранее предоставленные пользователем приложению, или только области, запрошенные в текущем вызове. По умолчанию true .

gapi.auth2.AuthorizeResponse

Ответ вернулся на обратный gapi.auth2.authorize метода gapi.auth2.authorize .

Характеристики
access_token string Маркер доступа предоставлен. Присутствует только в том случае, если permission или token были указаны в response_type .
id_token string Идентификационный токен предоставлен. Присутствует только в том случае, если id_token был указан в response_type .
code string Код авторизации предоставлен. Присутствует только в том случае, если code был указан в response_type .
scope string Области, предоставленные в токене доступа. Присутствует только в том случае, если permission или token были указаны в response_type .
expires_in number Количество секунд до истечения срока действия токена доступа. Присутствует только в том случае, если в response_type указано permission или token .
first_issued_at number Отметка времени, когда пользователь впервые предоставил запрошенные области. Присутствует только в том случае, если в response_type указано permission или token .
expires_at number Отметка времени, когда истекает срок действия токена доступа. Присутствует только в том случае, если permission или token были указаны в response_type .
error string Если запрос не удался, он содержит код ошибки .
error_subtype string Когда запрос не удался, он может содержать дополнительную информацию к возвращаемому коду ошибки.