Configurando o Facebook como um IdP de grupos de identidades - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando o Facebook como um IdP de grupos de identidades

Os grupos de identidade do Amazon Cognito se integram ao Facebook para fornecer autenticação federada aos usuários da aplicação móvel. Esta seção explica como inscrever e configurar a aplicação com o Facebook como IdP.

Configurar o Facebook

É necessário inscrever a aplicação com o Facebook para que você possa começar a autenticar usuários do Facebook e interagir com as respectivas APIs.

O Portal de desenvolvedores do Facebook ajuda você a configurar sua aplicação. Siga esse procedimento antes de integrar o Facebook no grupo de identidades do Amazon Cognito:

Configurar o Facebook
  1. No Facebook Developers portal, faça login com as credenciais do Facebook.

  2. No menu Apps, selecione Add a New App.

  3. Selecione uma plataforma e conclua o processo de início rápido.

Android

Para obter mais informações sobre como integrar aplicativos Android ao Login do Facebook, consulte o Guia de conceitos básicos do Facebook.

iOS – Objective-C

Para obter mais informações sobre como integrar aplicativos iOS Objective-C ao Login do Facebook, consulte o Guia de conceitos básicos do Facebook.

iOS – Swift

Para obter mais informações sobre como integrar aplicativos iOS Swift ao Login do Facebook, consulte o Guia de conceitos básicos do Facebook.

JavaScript

Para obter mais informações sobre como integrar aplicativos JavaScript da web com o Login do Facebook, consulte o Guia de introdução do Facebook.

Unity

Para obter mais informações sobre como integrar aplicações Unity ao Login do Facebook, consulte o Guia de conceitos básicos do Facebook.

Xamarin

Para adicionar a autenticação do Facebook, primeiro siga o fluxo apropriado a seguir para integrar o SDK do Facebook à aplicação. Os grupos de identidades do Amazon Cognito usam o token de acesso do Facebook para gerar um identificador exclusivo do usuário que está associado a uma identidade do Amazon Cognito.

Configurar um provedor de identidades no console de bancos de identidades do Amazon Cognito

Use o procedimento a seguir para configurar seu provedor de identidades.

Como adicionar um provedor de identidades (IdP) Facebook
  1. Selecione Bancos de identidades no console do Amazon Cognito. Selecione um banco de identidades.

  2. Selecione a guia Acesso do usuário.

  3. Selecione Adicionar provedor de identidade.

  4. Selecione Facebook.

  5. Insira o ID da aplicação do projeto OAuth que você criou em Meta for Developers. Para ter mais informações, consulte Login do Facebook nos documentos do Meta for Developers.

  6. Para alterar o perfil que o Amazon Cognito solicita ao emitir credenciais para usuários que se autenticaram com esse provedor, defina Configurações de perfil.

    1. Você pode atribuir aos usuários desse IdP o Perfil padrão que você configurou ao definir seu Perfil autenticado ou Escolher perfil com regras.

      1. Se você escolheu Escolher perfil com regras, insira a Declaração de origem da autenticação do usuário, o Operador pelo qual você deseja comparar a declaração, o Valor que gerará uma correspondência com essa opção de perfil e o Perfil que você deseja atribuir quando houver correspondência com a Atribuição de perfil. Selecione Adicionar outra para criar uma regra adicional com base em uma condição diferente.

      2. Selecione uma Resolução de perfil. Quando as declarações do usuário não correspondem às suas regras, você pode negar ou emitir credenciais para seu Perfil autenticado.

  7. Para alterar as tags de identidade principal que o Amazon Cognito atribui ao emitir credenciais para usuários que se autenticaram com esse provedor, configure Atributos para controle de acesso.

    1. Para não aplicar nenhuma tag de entidade principal, selecione Inativo.

    2. Para aplicar tags de entidade principal com base em declarações sub e aud, selecione Usar mapeamentos padrão.

    3. Para criar seu próprio esquema personalizado de atributos para as tags de entidade principal, selecione Usar mapeamentos personalizados. Depois, insira a Chave de tag que você deseja obter de cada declaração e representar em uma tag.

  8. Selecione Save Changes (Salvar alterações).

Uso do Facebook

Android

Para adicionar a autenticação do Facebook, primeiro siga o Guia do Facebook para integrar o SDK do Facebook à aplicação. Em seguida, adicione um botão “Login with Facebook” à interface do usuário Android. O SDK do Facebook usa um objeto de sessão para rastrear o estado. O Amazon Cognito usa o token de acesso desse objeto de sessão para autenticar o usuário, gerar o identificador exclusivo e, se necessário, conceder ao usuário acesso a outros recursos da AWS.

Depois de autenticar o usuário com o SDK do Facebook, adicione o token de sessão ao provedor de credenciais do Amazon Cognito.

Facebook SDK 4.0 ou posterior:

Map<String, String> logins = new HashMap<String, String>(); logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken()); credentialsProvider.setLogins(logins);

Facebook SDK antes de 4.0:

Map<String, String> logins = new HashMap<String, String>(); logins.put("graph.facebook.com", Session.getActiveSession().getAccessToken()); credentialsProvider.setLogins(logins);

O processo de login do Facebook inicializa uma sessão singleton no respectivo SDK. O objeto de sessão do Facebook contém um token OAuth que o Amazon Cognito usa para gerar credenciais da AWS para o usuário final autenticado. O Amazon Cognito também usa o token para verificar se existe um usuário no banco de dados de usuário que corresponda a essa identidade específica do Facebook. Se o usuário já existe, a API retorna o identificador existente. Do contrário, a API retorna um novo identificador. Os identificadores são automaticamente armazenados em cache no dispositivo local pelo SDK cliente.

nota

Depois de configurar o mapa de logins, chame refresh ou get para obter as credenciais da AWS.

iOS – Objective-C

Para adicionar a autenticação do Facebook, primeiro siga o Guia do Facebook para integrar o SDK do Facebook à aplicação. Em seguida, adicione um botão Login with Facebook à interface de usuário. O SDK do Facebook usa um objeto de sessão para rastrear o estado. O Amazon Cognito usa o token de acesso desse objeto de sessão para autenticar o usuário e vinculá-lo a grupos de identidades exclusivas do Amazon Cognito (identidades federadas).

Para fornecer o token de acesso do Facebook ao Amazon Cognito, implemente o protocolo AWSIdentityProviderManager.

Ao implementar o método logins, retorne um dicionário contendo AWSIdentityProviderFacebook. Esse dicionário atua como a chave, ao passo que o token de acesso atual do usuário autenticado do Facebook atua como o valor, conforme mostrado no exemplo de código a seguir.

- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins { FBSDKAccessToken* fbToken = [FBSDKAccessToken currentAccessToken]; if(fbToken){ NSString *token = fbToken.tokenString; return [AWSTask taskWithResult: @{ AWSIdentityProviderFacebook : token }]; }else{ return [AWSTask taskWithError:[NSError errorWithDomain:@"Facebook Login" code:-1 userInfo:@{@"error":@"No current Facebook access token"}]]; } }

Ao instanciar o AWSCognitoCredentialsProvider, passe a classe que implementa AWSIdentityProviderManager como o valor de identityProviderManager no construtor. Para obter mais informações, acesse a página de AWSCognitoCredentialsProviderreferência e escolha initWithRegionTipo:identityPoolId: identityProviderManager.

iOS – Swift

Para adicionar a autenticação do Facebook, primeiro siga o Guia do Facebook para integrar o SDK do Facebook à aplicação. Em seguida, adicione um botão Login with Facebook à interface de usuário. O SDK do Facebook usa um objeto de sessão para rastrear o estado. O Amazon Cognito usa o token de acesso desse objeto de sessão para autenticar o usuário e vinculá-lo a grupos de identidades exclusivas do Amazon Cognito (identidades federadas).

Para fornecer o token de acesso do Facebook ao Amazon Cognito, implemente o protocolo AWSIdentityProviderManager.

Na implementação do método logins, retorne um dicionário contendo AWSIdentityProviderFacebook. Esse dicionário atua como a chave, ao passo que o token de acesso atual do usuário autenticado do Facebook atua como o valor, conforme mostrado no exemplo de código a seguir.

class FacebookProvider: NSObject, AWSIdentityProviderManager { func logins() -> AWSTask<NSDictionary> { if let token = AccessToken.current?.authenticationToken { return AWSTask(result: [AWSIdentityProviderFacebook:token]) } return AWSTask(error:NSError(domain: "Facebook Login", code: -1 , userInfo: ["Facebook" : "No current Facebook access token"])) } }

Ao instanciar o AWSCognitoCredentialsProvider, passe a classe que implementa AWSIdentityProviderManager como o valor de identityProviderManager no construtor. Para obter mais informações, acesse a página de AWSCognitoCredentialsProviderreferência e escolha initWithRegionTipo:identityPoolId: identityProviderManager.

JavaScript

Para adicionar a autenticação do Facebook, siga o Login do facebook para a Web para adicionar o botão “Login with Facebook” ao seu site. O SDK do Facebook usa um objeto de sessão para rastrear o estado. O Amazon Cognito usa o token de acesso desse objeto de sessão para autenticar o usuário, gerar o identificador exclusivo e, se necessário, conceder ao usuário acesso a outros recursos da AWS.

Depois de autenticar o usuário com o SDK do Facebook, adicione o token de sessão ao provedor de credenciais do Amazon Cognito.

FB.login(function (response) { // Check if the user logged in successfully. if (response.authResponse) { console.log('You are now logged in.'); // Add the Facebook access token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); } else { console.log('There was a problem logging you in.'); } });

O SDK do Facebook obtém um token OAuth que o Amazon Cognito usa para gerar credenciais da AWS para o usuário final autenticado. O Amazon Cognito também usa o token para fazer a verificação em relação ao banco de dados de usuário quanto à existência de um usuário que corresponda a essa identidade específica do Facebook. Se o usuário já existe, a API retorna o identificador existente. Caso contrário, um novo identificador é retornado. Identificadores são automaticamente armazenados em cache pelo cliente SDK no dispositivo local.

nota

Depois de configurar o mapa de logins, chame refresh ou get para obter as credenciais. Para obter um exemplo de código, consulte “Caso de uso 17, Integrando grupos de usuários com a Identidade Cognito”, JavaScript no arquivo README.

Unity

Para adicionar a autenticação do Facebook, primeiro siga o Guia do Facebook para integrar o SDK do Facebook à aplicação. O Amazon Cognito usa o token de acesso do Facebook do objeto FB para gerar um identificador exclusivo do usuário que está associado a uma identidade do Amazon Cognito.

Depois de autenticar o usuário com o SDK do Facebook, adicione o token de sessão ao provedor de credenciais do Amazon Cognito:

void Start() { FB.Init(delegate() { if (FB.IsLoggedIn) { //User already logged in from a previous session AddFacebookTokenToCognito(); } else { FB.Login ("email", FacebookLoginCallback); } }); } void FacebookLoginCallback(FBResult result) { if (FB.IsLoggedIn) { AddFacebookTokenToCognito(); } else { Debug.Log("FB Login error"); } } void AddFacebookTokenToCognito() { credentials.AddLogin ("graph.facebook.com", AccessToken.CurrentAccessToken.TokenString); }

Antes de usar FB.AccessToken, chame FB.Login() e verifique se FB.IsLoggedIn é verdadeiro.

Xamarin

Xamarin para Android:

public void InitializeFacebook() { FacebookSdk.SdkInitialize(this.ApplicationContext); callbackManager = CallbackManagerFactory.Create(); LoginManager.Instance.RegisterCallback(callbackManager, new FacebookCallback &lt; LoginResult &gt; () { HandleSuccess = loginResult = &gt; { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new activity }, HandleCancel = () = &gt; { //throw error message }, HandleError = loginError = &gt; { //throw error message } }); LoginManager.Instance.LogInWithReadPermissions(this, new List &lt; string &gt; { "public_profile" }); }

Xamarin para iOS:

public void InitializeFacebook() { LoginManager login = new LoginManager(); login.LogInWithReadPermissions(readPermissions.ToArray(), delegate(LoginManagerLoginResult result, NSError error) { if (error != null) { //throw error message } else if (result.IsCancelled) { //throw error message } else { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new view controller } }); }