Esta referência descreve os métodos e atributos do cliente JavaScript que você usará para implementar o Login do Google nos seus aplicativos da Web.
Se você encontrar algum problema ao usar a biblioteca, informe-o no nosso repositório do GitHub.
Configuração da autenticação
Carregue a biblioteca da plataforma de APIs do Google para criar o objeto gapi
:
<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
Depois que a biblioteca da plataforma for carregada, carregue a biblioteca auth2
:
function init() {
gapi.load('auth2', function() {
/* Ready. Make a call to gapi.auth2.init or some other API */
});
}
gapi.auth2.init(params)
Inicializa o objeto GoogleAuth
. É necessário chamar esse método antes dos métodos de gapi.auth2.GoogleAuth
.
Ao inicializar o objeto GoogleAuth
, você o configura com seu ID do cliente OAuth 2.0 e outras opções que quiser especificar. Em seguida, se o usuário já tiver feito login, o objeto GoogleAuth
vai restaurar o estado de login da sessão anterior.
Argumentos | |
---|---|
params |
Um objeto que contém pares de chave-valor dos dados de configuração do cliente. Consulte
gapi.auth2.ClientConfig para as diferentes
propriedades configuráveis. Por exemplo:
{ client_id: 'CLIENT_ID.apps.googleusercontent.com' } |
Retorna | |
---|---|
gapi.auth2.GoogleAuth |
O objeto gapi.auth2.GoogleAuth . Use o método then() para receber uma promessa que será resolvida quando o objeto gapi.auth2.GoogleAuth terminar a inicialização.
|
GoogleAuth.then(onInit, onError)
Chama a função onInit quando o objeto GoogleAuth
está totalmente
inicializado. Se um erro for gerado durante a inicialização, o que pode acontecer em navegadores antigos sem suporte, a função onError será chamada.
Argumentos | |
---|---|
onInit |
A função chamada com o objeto GoogleAuth quando ele está totalmente
inicializado.
|
onError |
A função chamada com um objeto que contém uma propriedade error , se GoogleAuth falhar ao inicializar.
|
Retorna | |
---|---|
Promise | Uma Promise que é atendida quando a função onInit
é concluída ou rejeitada se um erro de inicialização é gerado. Ela é resolvida com o
valor retornado da função onInit, se houver. |
Códigos de erro
idpiframe_initialization_failed
-
Falha ao inicializar um iframe obrigatório do Google, por exemplo, devido a um ambiente
incompatível. Uma propriedade
details
fornecerá mais informações sobre o erro gerado.
gapi.auth2.ClientConfig
Interface que representa os diferentes parâmetros de configuração do
método gapi.auth2.init
.
Parâmetros | ||
---|---|---|
client_id |
string |
Obrigatório. O ID do cliente do app, encontrado e criado no Google Developers Console. |
cookie_policy |
string |
Os domínios em que os cookies de login serão criados. Um URI, single_host_origin ou none . Se não for especificado, o padrão será single_host_origin . |
scope |
string |
Os escopos a serem solicitados, como uma string delimitada por espaços. Opcional se fetch_basic_profile não estiver definido como falso. |
fetch_basic_profile |
boolean |
Busque informações básicas de perfil dos usuários quando eles fizerem login. Adiciona "profile", "email" e "openid" aos escopos solicitados. Verdadeiro se não especificado. |
hosted_domain |
string |
O domínio do G Suite a que os usuários precisam fazer login. Isso é suscetível a modificações por clientes, portanto, verifique a propriedade de domínio hospedado do usuário retornado. Use GoogleUser.getHostedDomain() no cliente e a declaração hd no token de ID no servidor para verificar o domínio é o que você esperava.
|
ux_mode |
string |
O modo de UX a ser usado no fluxo de login. Por padrão, o fluxo de consentimento é aberto em um pop-up. Os valores válidos são: popup e redirect . |
redirect_uri |
string |
Se estiver usando ux_mode='redirect' , esse parâmetro permitirá que você substitua o padrão redirect_uri que será usado no final do fluxo de consentimento. O padrão redirect_uri é o URL atual sem parâmetros de consulta e fragmento de hash.
|
plugin_name |
string |
Opcional. Se esse valor for definido, os novos IDs do cliente criados antes de 29
de julho de 2022 vão poder usar a biblioteca mais antiga da Plataforma Google.
Por padrão, os IDs do cliente recém-criados agora não podem usar a biblioteca da Platform e precisam usar a biblioteca mais recente do Google Identity Services. Você pode escolher qualquer valor. Recomendamos um nome descritivo, como
o nome do produto ou do plug-in, para facilitar a identificação.
Exemplo: plugin_name: 'YOUR_STRING_HERE'
|
Autenticação
GoogleAuth
é uma classe singleton que oferece métodos para permitir que o usuário faça login em uma Conta do Google, acesse o status de login atual, acesse dados específicos do perfil do Google, solicite escopos adicionais e saia da conta atual.
gapi.auth2.getAuthInstance()
Retorna o objeto GoogleAuth
. Inicialize o objeto GoogleAuth
com gapi.auth2.init()
antes de chamar esse método.
Retorna | |
---|---|
gapi.auth2.GoogleAuth |
O objeto gapi.auth2.GoogleAuth . Use esse objeto para chamar os métodos de gapi.auth2.GoogleAuth .
|
GoogleAuth.isSignedIn.get()
Retorna se o usuário atual está conectado.
Retorna | |
---|---|
Booleano |
true se o usuário estiver conectado ou false se o usuário estiver desconectado ou o objeto GoogleAuth não tiver sido inicializado.
|
GoogleAuth.isSignedIn.listen(listener)
Detecte alterações no estado de login do usuário atual.
Argumentos | |
---|---|
listener |
Uma função que aceita um valor booleano. listen() transmite
true para essa função quando o usuário faz login e
false quando ele sai.
|
GoogleAuth.signIn()
Faz o login do usuário com as opções especificadas para gapi.auth2.init()
.
Retorna | |
---|---|
Promise | Um Promise que é preenchido com a instância GoogleUser quando o usuário faz a autenticação e concede os escopos solicitados ou é rejeitado com um objeto que contém uma propriedade error caso ocorra um erro. Veja os códigos de erro abaixo. |
Códigos de erro
Consulte os GoogleAuth.signIn(options)
.
GoogleAuth.signIn(options)
Faz o login do usuário usando as opções especificadas.
Argumentos | |
---|---|
options |
Possibilidades:
|
Retorna | |
---|---|
Promise | Um Promise que é preenchido com a instância GoogleUser quando o usuário faz a autenticação e concede os escopos solicitados ou é rejeitado com um objeto que contém uma propriedade error caso ocorra um erro. Veja os códigos de erro abaixo. |
Códigos de erro
popup_closed_by_user
- O usuário fechou o pop-up antes de concluir o fluxo de login.
access_denied
- O usuário negou a permissão para os escopos necessários.
immediate_failed
-
Nenhum usuário pode ser selecionado automaticamente sem solicitar o fluxo de consentimento. Erro gerado ao usar
signIn
com a opçãoprompt: 'none'
. Essa opção não é obrigatória, já quegapi.auth2.init
fará o login do usuário automaticamente se ele tiver feito login anteriormente em uma sessão anterior.
gapi.auth2.SignInOptions
Interface que representa os diferentes parâmetros de configuração para o
método GoogleAuth.signIn(options)
.
Parâmetros | ||
---|---|---|
prompt |
string |
Força um modo específico para o fluxo de consentimento. Opcional. Os valores possíveis são:
|
scope |
string |
Os escopos a serem solicitados, como uma string delimitada por espaços, além dos escopos definidos nos
parâmetros gapi.auth2.init . Essa propriedade é opcional quando fetch_basic_profile não está definido como falso.
|
ux_mode |
string |
O modo de UX a ser usado no fluxo de login. Por padrão, o fluxo de consentimento é aberto em um pop-up. Os valores válidos são: popup e redirect . |
redirect_uri |
string |
Se estiver usando ux_mode='redirect' , esse parâmetro permitirá substituir o padrão redirect_uri que será usado no final do fluxo de consentimento. O padrão redirect_uri é o URL atual sem parâmetros de
consulta e fragmento de hash.
|
GoogleAuth.signOut()
Desconecta a conta atual do aplicativo.
Retorna | |
---|---|
Promise | Uma Promise que é atendida quando o usuário foi desconectado. |
GoogleAuth.disconnect()
revoga todos os escopos concedidos pelo usuário.
GoogleAuth.grantOfflineAccess(options)
Receba permissão do usuário para acessar off-line os escopos especificados.
Argumentos | |
---|---|
options |
Um objeto gapi.auth2.OfflineAccessOptions
que contém pares de chave-valor de parâmetros. Por exemplo: { scope: 'profile email' } |
Retorna | |
---|---|
Promise | Uma Promise que é atendida quando o usuário concede os escopos solicitados, transmitindo um objeto que contém o código de autorização para o gerenciador de fulfillment do Promise .
Por exemplo: auth2.grantOfflineAccess().then(function(resp) { var auth_code = resp.code; }); |
Códigos de erro
popup_closed_by_user
- O usuário fechou o pop-up antes de concluir o fluxo de consentimento.
access_denied
- O usuário negou a permissão para os escopos necessários.
immediate_failed
-
Nenhum usuário pode ser selecionado automaticamente sem solicitar o fluxo de consentimento. Erro gerado ao usar
signIn
com a opçãoprompt: 'none'
. Essa opção não é obrigatória, já quegapi.auth2.init
fará o login do usuário automaticamente se ele tiver feito login anteriormente em uma sessão anterior.
gapi.auth2.OfflineAccessOptions
Interface que representa os diferentes parâmetros de configuração do
método
GoogleAuth.grantOfflineAccess(options)
.
Parâmetros | ||
---|---|---|
prompt |
string |
Força um modo específico para o fluxo de consentimento. Opcional. Os valores possíveis são:
|
scope |
string |
Os escopos a serem solicitados, como uma string delimitada por espaços, além dos escopos definidos nos
parâmetros gapi.auth2.init . Essa propriedade é opcional quando fetch_basic_profile não está definido como falso.
|
GoogleAuth.AttachClickHandler(container, options, onsuccess, onfailure)
Anexa o fluxo de login ao gerenciador de cliques do contêiner especificado.
Argumentos | |
---|---|
container | O ID ou uma referência ao elemento div a que o gerenciador de cliques será anexado. |
options | Um objeto que contém pares de chave-valor de parâmetros. Consulte GoogleAuth.signIn(). |
onsuccess | A função a ser chamada após a conclusão do login. |
onfailure | A função a ser chamada se o login falhar. |
comerciais
Um objeto GoogleUser
representa uma conta de usuário.
Os objetos GoogleUser
normalmente são conseguidos chamando GoogleAuth.currentUser.get().
GoogleAuth.currentUser.get()
Retorna um objeto GoogleUser
que representa o usuário atual. Em uma instância GoogleAuth
recém-inicializada, o usuário atual não foi definido. Use o método currentUser.listen()
ou GoogleAuth.then()
para receber uma instância GoogleAuth
inicializada.
Retorna | |
---|---|
GoogleUser |
O usuário atual |
GoogleAuth.currentUser.listen(listener)
Detectar mudanças no currentUser.
Argumentos | |
---|---|
listener |
Uma função que usa um parâmetro GoogleUser .
listen transmite para essa função uma instância GoogleUser
em cada mudança que modifica currentUser .
|
GoogleUser.getId()
Extrai a string com o ID exclusivo do usuário.
Retorna | |
---|---|
String | O ID exclusivo do usuário |
GoogleUser.isSignedIn()
Retorna verdadeiro se o usuário estiver conectado.
Retorna | |
---|---|
Booleano | Verdadeiro se o usuário estiver conectado |
GoogleUser.getHostedDomain()
Consiga o domínio do G Suite do usuário se ele fez login com uma conta do G Suite.
Retorna | |
---|---|
String | O domínio do G Suite do usuário |
GoogleUser.getGrantedScopes()
Acessa os escopos que o usuário concedeu como uma string delimitada por espaço.
Retorna | |
---|---|
String | Escopos concedidos pelo usuário |
GoogleUser.getBasicProfile()
Receba as informações básicas do perfil do usuário.
Retorna | |
---|---|
gapi.auth2.BasicProfile |
É possível recuperar as propriedades de gapi.auth2.BasicProfile
com os seguintes métodos:
|
GoogleUser.getAuthResponse(includeAuthorizationData)
Receba o objeto de resposta da sessão de autenticação do usuário.
Argumentos | |
---|---|
includeAuthorizationData | Opcional:um booleano que especifica se é necessário retornar sempre um token de acesso e
escopos. Por padrão, o token de acesso e os escopos solicitados não são retornados quando fetch_basic_profile é verdadeiro (o valor padrão) e nenhum escopo adicional é solicitado. |
Retorna | |
---|---|
gapi.auth2.AuthResponse |
Um objeto gapi.auth2.AuthResponse . |
GoogleUser.reloadAuthResponse()
Força uma atualização do token de acesso e retorna uma promessa para o novo AuthResponse.
Retorna | |
---|---|
Promise |
Um Promise que é preenchido com o gapi.auth2.AuthResponse recarregado ao recarregar o token OAuth foi concluído.
|
gapi.auth2.AuthResponse
A resposta retornada ao chamar os métodos GoogleUser.getAuthResponse(includeAuthorizationData)
ou GoogleUser.reloadAuthResponse()
.
Propriedades | ||
---|---|---|
access_token |
string |
O token de acesso concedido. |
id_token |
string |
O token de ID concedido. |
scope |
string |
Os escopos concedidos no token de acesso. |
expires_in |
number |
O número de segundos até o token de acesso expirar. |
first_issued_at |
number |
O carimbo de data/hora em que o usuário concedeu os escopos solicitados pela primeira vez. |
expires_at |
number |
Carimbo de data/hora em que o token de acesso vai expirar. |
GoogleUser.hasGrantedScopes(scopes)
Retorna verdadeiro se o usuário concedeu os escopos especificados.
Argumentos | |
---|---|
scopes | Uma string de escopos delimitada por espaços. |
Retorna | |
---|---|
Booleano | Verdadeiro se os escopos tiverem sido concedidos |
GoogleUser.grant(options)
Solicite escopos adicionais ao usuário.
Consulte GoogleAuth.signIn()
para ver a lista de
parâmetros e o código do erro.
GoogleUser.grantOff-lineAccess(options)
Receba permissão do usuário para acessar off-line os escopos especificados.
Argumentos | |
---|---|
options |
Um objeto gapi.auth2.OfflineAccessOptions
que contém pares de chave-valor de parâmetros. Por exemplo: { scope: 'profile email' } |
GoogleUser.disconnect()
revoga todos os escopos que o usuário concedeu ao aplicativo.
Elementos da interface
gapi.signin2.render(id, options)
Renderiza um botão de login no elemento com o ID fornecido, usando as configurações especificadas pelo objeto options.
Argumentos | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | O ID do elemento em que o botão de login será renderizado. | ||||||||||||||||
options |
Um objeto que contém as configurações usadas para renderizar o botão. Por exemplo:
{ scope: 'email', width: 200, height: 50, longtitle: true, theme: 'dark', onsuccess: handleSuccess, onfailure: handleFailure }Você pode especificar as seguintes opções:
|
Avançado
gapi.auth2.autorizar(params e callback)
Executa uma autorização OAuth 2.0 única. Dependendo dos parâmetros usados, isso vai abrir um pop-up para o fluxo de login do Google ou tentar carregar a resposta solicitada silenciosamente, sem interação do usuário.
Estes são alguns casos de uso em que esse método é útil:
- Seu aplicativo só precisa solicitar um endpoint da API do Google uma vez, por exemplo, para carregar os vídeos favoritos do usuário no YouTube na primeira vez que ele fizer login.
- O aplicativo tem a própria infraestrutura de gerenciamento de sessões e exige o token de ID apenas uma vez para identificar o usuário no back-end.
- Vários IDs do cliente são usados na mesma página.
Argumentos | |
---|---|
params |
Um objeto que contém pares de chave-valor dos dados de configuração. Consulte
gapi.auth2.AuthorizeConfig para
as diferentes propriedades configuráveis. Por exemplo:
{ client_id: 'CLIENT_ID.apps.googleusercontent.com', scope: 'email profile openid', response_type: 'id_token permission' } |
callback |
Uma função chamada com um objeto gapi.auth2.AuthorizeResponse após a conclusão da solicitação (com sucesso ou com falha).
|
Exemplo
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.
});
Códigos de erro
idpiframe_initialization_failed
-
Falha ao inicializar um iframe obrigatório do Google, por exemplo, devido a um ambiente
incompatível. Uma propriedade
details
fornecerá mais informações sobre o erro gerado. popup_closed_by_user
- O usuário fechou o pop-up antes de concluir o fluxo de login.
access_denied
- O usuário negou a permissão para os escopos necessários.
immediate_failed
-
Nenhum usuário pode ser selecionado automaticamente sem solicitar o fluxo de consentimento. Erro gerado ao usar
signIn
com a opçãoprompt: 'none'
.
gapi.auth2.AuthorizeConfig
Interface que representa os diferentes parâmetros de configuração para o
método gapi.auth2.authorize
.
Propriedades | ||
---|---|---|
client_id |
string |
Obrigatório. O ID do cliente do app, encontrado e criado no Google Developers Console. |
scope |
string |
Obrigatório. Os escopos a serem solicitados, como uma string delimitada por espaços. |
response_type |
string |
Uma lista de tipos de resposta delimitados por espaço. O valor padrão é 'permission' . Os valores
possíveis são:
|
prompt |
string |
Força um modo específico para o fluxo de consentimento. Os valores possíveis são:
|
cookie_policy |
string |
Os domínios em que os cookies de login serão criados. Um URI, single_host_origin ou none . Se não for especificado, o padrão será single_host_origin .
|
hosted_domain |
string |
O domínio do G Suite a que os usuários precisam fazer login. Isso é suscetível a modificações por clientes, portanto, verifique a propriedade de domínio hospedado do usuário retornado. |
login_hint |
string |
O e-mail ou ID do usuário para pré-selecionar no fluxo de login. Isso é suscetível à modificação pelo usuário, a menos que prompt: "none" seja usado.
|
include_granted_scopes |
boolean |
Define se é necessário solicitar um token de acesso que inclua todos os escopos concedidos anteriormente pelo usuário
ao app ou apenas os escopos solicitados na chamada atual. O valor padrão é true .
|
plugin_name |
string |
Opcional. Se definido, os IDs do cliente criados antes de 29 de julho de 2022 poderão usar a
Biblioteca Google Platform. Por padrão, os IDs do cliente recém-criados são impedidos de usar a biblioteca da Platform e, em vez disso, precisam usar a biblioteca mais recente dos Serviços de Identificação do Google. Você pode escolher qualquer valor. É recomendável usar um nome descritivo,
como o nome do produto ou do plug-in, para facilitar a identificação.
Exemplo: plugin_name: 'YOUR_STRING_HERE'
|
gapi.auth2.AuthorizeResponse
A resposta retornada ao callback do
método gapi.auth2.authorize
.
Propriedades | ||
---|---|---|
access_token |
string |
O token de acesso concedido. Presente apenas se permission ou token tiver sido
especificado no response_type .
|
id_token |
string |
O token de ID concedido. Presente apenas se id_token tiver sido especificado no
response_type .
|
code |
string |
O código de autorização concedido. Presente apenas se code tiver sido especificado no
response_type .
|
scope |
string |
Os escopos concedidos no token de acesso. Presente apenas se permission ou
token tiver sido especificado no response_type .
|
expires_in |
number |
O número de segundos até o token de acesso expirar. Presente apenas se permission
ou token tiver sido especificado no response_type .
|
first_issued_at |
number |
O carimbo de data/hora em que o usuário concedeu os escopos solicitados pela primeira vez. Presente apenas se
permission ou token tiver sido especificado no response_type .
|
expires_at |
number |
Carimbo de data/hora em que o token de acesso vai expirar. Presente apenas se permission
ou token tiver sido especificado no response_type .
|
error |
string |
Quando a solicitação falha, ele contém o código do erro. |
error_subtype |
string |
Quando a solicitação falha, esse código pode conter informações adicionais sobre o código de erro também retornado. |