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
Configurar o Facebook
-
No Facebook Developers portal
, faça login com as credenciais do Facebook. -
No menu Apps, selecione Add a New App.
-
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.
-
Selecione Manage Identity Pools (Gerenciar grupos de identidades) na página inicial do console do Amazon Cognito
. -
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.
-
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.
-
Role para baixo e escolha Authentication providers (Provedores de autenticação) para expandir a seção.
-
Selecione a guia Facebook.
-
Selecione Unlock (Desbloquear).
-
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
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 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
iOS – Swift
Para adicionar a autenticação do Facebook, primeiro siga o Guia do Facebook
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
JavaScript
Para adicionar a autenticação do Facebook, siga o Login do facebook para a Web
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 FacebookFB
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 < LoginResult > () { HandleSuccess = loginResult = > { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new activity }, HandleCancel = () = > { //throw error message }, HandleError = loginError = > { //throw error message } }); LoginManager.Instance.LogInWithReadPermissions(this, new List < string > { "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 } }); }