Facebook (grupos de identidades) - Amazon Cognito

Facebook (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 aplicações Web JavaScript ao Login do Facebook, consulte o Guia de conceitos básicos 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 o provedor externo no console de identidades federadas do Amazon Cognito

Use o procedimento a seguir para configurar seu provedor externo.

  1. Selecione Manage Identity Pools (Gerenciar grupos de identidades) na página inicial do console do Amazon Cognito.

  2. Escolha o nome do grupo de identidades para o qual deseja habilitar o Facebook como provedor externo. A página Dashboard (Painel) do grupo de identidades será exibida.

  3. No canto superior direito da página Dashboard (Painel), selecione Edit identity pool (Editar grupo de identidades). A página Edit identity pool será exibida.

  4. Role para baixo e escolha Authentication providers (Provedores de autenticação) para expandir a seção.

  5. Selecione a guia Facebook.

  6. Selecione Unlock (Desbloquear).

  7. Insira o Facebook App ID obtido do Facebook e, em seguida, escolha Save Changes.

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 referência AWSCognitoCredentialsProvider e escolha initWithRegionType: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 referência AWSCognitoCredentialsProvider e escolha initWithRegionType: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 "Use Case 17, Integrating User Pools com Cognito Identity", no arquivo README do JavaScript.

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 } }); }