В этом справочнике описаны методы и атрибуты клиента JavaScript, которые вы будете использовать для реализации входа через Google в свои веб-приложения.
Если вы столкнулись с какой-либо проблемой при использовании библиотеки, сообщите об этом в наш репозиторий GitHub .
Настройка аутентификации
Загрузите библиотеку платформы API Google, чтобы создать объект 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
восстанавливает состояние входа пользователя из предыдущего сеанса.
Аргументы | |
---|---|
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 .
Аргументы | |
---|---|
onInit | Функция, вызываемая с объектом GoogleAuth , когда он полностью инициализирован. |
onError | Функция, вызываемая с объектом, содержащим свойство 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 , если он не указан. |
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-адрес, лишенный параметров запроса и хеш-фрагмента. |
plugin_name | string | Необязательный. Если установлено это значение, новые идентификаторы клиентов, созданные до 29 июля 2022 г., могут использовать старую библиотеку платформы Google. По умолчанию вновь созданные идентификаторы клиентов теперь не могут использовать библиотеку платформы и вместо этого должны использовать более новую библиотеку Google Identity Services. Вы можете выбрать любое значение, описательное имя, такое как название продукта или плагина, рекомендуется для легкой идентификации. Пример: plugin_name: 'YOUR_STRING_HERE' |
Аутентификация
GoogleAuth
— это одноэлементный класс, который предоставляет методы, позволяющие пользователю входить в систему с помощью учетной записи Google, получать текущий статус входа пользователя, получать определенные данные из профиля пользователя Google, запрашивать дополнительные области действия и выходить из текущей учетной записи.
gapi.auth2.getAuthInstance()
Возвращает объект GoogleAuth
. Вы должны инициализировать объект GoogleAuth
с помощью gapi.auth2.init()
перед вызовом этого метода.
Возвращает | |
---|---|
gapi.auth2.GoogleAuth | Объект gapi.auth2.GoogleAuth . Используйте этот объект для вызова методов gapi.auth2.GoogleAuth . |
GoogleAuth.isSignedIn.get()
Возвращает, вошел ли текущий пользователь в систему.
Возвращает | |
---|---|
логический | true если пользователь выполнил вход, или false , если пользователь вышел из системы или объект GoogleAuth не инициализирован. |
GoogleAuth.isSignedIn.listen(слушатель)
Прослушивайте изменения в состоянии входа текущего пользователя.
Аргументы | |
---|---|
listener | Функция, которая принимает логическое значение. listen() передает этой функции true , когда пользователь входит в систему, и false , когда пользователь выходит из нее. |
GoogleAuth.signIn()
Выполняет вход пользователя с параметрами, указанными для gapi.auth2.init()
.
Возвращает | |
---|---|
Обещать | Promise , которое выполняется с экземпляром GoogleUser , когда пользователь успешно проходит аутентификацию и предоставляет запрошенные области действия, или отклоняется с помощью объекта, содержащего свойство error , если произошла ошибка (коды ошибок см. ниже). |
Коды ошибок
См. GoogleAuth.signIn( options )
.
GoogleAuth.signIn( options )
Выполняет вход пользователя с указанными параметрами.
Аргументы | |
---|---|
options | Или:
|
Возвращает | |
---|---|
Обещать | Promise , которое выполняется с экземпляром GoogleUser , когда пользователь успешно проходит аутентификацию и предоставляет запрошенные области действия, или отклоняется с помощью объекта, содержащего свойство error , если произошла ошибка (коды ошибок см. ниже). |
Коды ошибок
-
popup_closed_by_user
- Пользователь закрыл всплывающее окно до завершения процесса входа.
-
access_denied
- Пользователь запретил доступ к требуемым областям.
-
immediate_failed
- Ни один пользователь не может быть выбран автоматически без запроса согласия. Возникла ошибка при использовании
signIn
сprompt: 'none'
. Этот параметр не требуется использовать, так какgapi.auth2.init
автоматически войдет в систему пользователя, если он ранее входил в систему во время предыдущего сеанса.
gapi.auth2.SignInOptions
Интерфейс, представляющий различные параметры конфигурации для метода GoogleAuth.signIn( options )
.
Параметры | ||
---|---|---|
prompt | string | Задает определенный режим для потока согласия. Необязательный. Возможные значения:
|
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.отключить()
Отменяет все области действия, предоставленные пользователем.
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
сprompt: 'none'
. Этот параметр не требуется использовать, так какgapi.auth2.init
автоматически войдет в систему пользователя, если он ранее входил в систему во время предыдущего сеанса.
gapi.auth2.OfflineAccessOptions
Интерфейс, представляющий различные параметры конфигурации для метода GoogleAuth.grantOfflineAccess( options )
.
Параметры | ||
---|---|---|
prompt | string | Задает определенный режим для потока согласия. Необязательный. Возможные значения:
|
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 следующими методами:
|
GoogleUser.getAuthResponse(includeAuthorizationData)
Получите объект ответа из сеанса аутентификации пользователя.
Аргументы | |
---|---|
includeAuthorizationData | Необязательно: логическое значение, указывающее, следует ли всегда возвращать маркер доступа и области действия. По умолчанию маркер доступа и запрошенные области не возвращаются, если fetch_basic_profile имеет значение true (значение по умолчанию) и дополнительные области не запрашиваются. |
Возвращает | |
---|---|
gapi.auth2.AuthResponse | Объект gapi.auth2.AuthResponse . |
GoogleUser.reloadAuthResponse()
Принудительно обновляет токен доступа, а затем возвращает обещание для нового 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 | Строка областей действия, разделенная пробелами. |
Возвращает | |
---|---|
логический | True, если области были предоставлены |
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 }Можно указать следующие параметры:
|
Передовой
gapi.auth2.authorize ( params , callback )
Выполняет однократную авторизацию OAuth 2.0. В зависимости от используемых параметров это откроет всплывающее окно для процесса входа в Google или попытается автоматически загрузить запрошенный ответ, без взаимодействия с пользователем.
Некоторые случаи использования, когда этот метод полезен, включают:
- Вашему приложению нужно только один раз запросить конечную точку API Google, например, чтобы загрузить любимые видео пользователя 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.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
сprompt: 'none'
.
gapi.auth2.AuthorizeConfig
Интерфейс, представляющий различные параметры конфигурации для метода gapi.auth2.authorize
.
Характеристики | ||
---|---|---|
client_id | string | Требуется . Идентификатор клиента приложения, найденный и созданный в Google Developers Console. |
scope | string | Требуется . Запрашиваемые области в виде строки с разделителями-пробелами. |
response_type | string | Список типов ответов, разделенных пробелами. По умолчанию 'permission' . Возможные значения:
|
prompt | string | Задает определенный режим для потока согласия. Возможные значения:
|
cookie_policy | string | Домены, для которых создаются файлы cookie для входа. Либо URI, single_host_origin , либо none . По умолчанию используется single_host_origin , если он не указан. |
hosted_domain | string | Домен G Suite, к которому должны принадлежать пользователи для входа. Он может быть изменен клиентами, поэтому обязательно проверьте свойство размещенного домена возвращенного пользователя. |
login_hint | string | Электронная почта или идентификатор пользователя для предварительного выбора в процессе входа. Это может быть изменено пользователем, если только не используется prompt: "none" . |
include_granted_scopes | boolean | Следует ли запрашивать маркер доступа, включающий все области, ранее предоставленные пользователем приложению, или только области, запрошенные в текущем вызове. По умолчанию true . |
plugin_name | string | Необязательный. Если этот параметр установлен, идентификаторы клиентов, созданные до 29 июля 2022 г., могут использовать библиотеку платформы Google. По умолчанию вновь созданные идентификаторы клиентов не могут использовать библиотеку платформы и вместо этого должны использовать более новую библиотеку Google Identity Services. Вы можете выбрать любое значение, описательное имя, такое как название продукта или плагина, рекомендуется для легкой идентификации. Пример: plugin_name: 'YOUR_STRING_HERE' |
gapi.auth2.AuthorizeResponse
Ответ возвращается на обратный вызов метода 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 | Количество секунд до истечения срока действия токена доступа. Присутствует только в том случае, если permission или token были указаны в response_type . |
first_issued_at | number | Отметка времени, когда пользователь впервые предоставил запрошенные области. Присутствует только в том случае, если permission или token были указаны в response_type . |
expires_at | number | Отметка времени, по истечении которой токен доступа истечет. Присутствует только в том случае, если permission или token были указаны в response_type . |
error | string | Когда запрос не выполнен, он содержит код ошибки . |
error_subtype | string | Если запрос не удался, он может содержать дополнительную информацию к возвращаемому коду ошибки. |