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á.
Configurar o Facebook como um IdP de bancos de identidades
Os bancos de identidades do Amazon Cognito trabalham com o Facebook para fornecer autenticação federada aos usuários da aplicação. Esta seção explica como inscrever e configurar a aplicação com o Facebook como IdP.
Configurar o Facebook
Registre seu aplicativo no Facebook antes de autenticar os usuários do Facebook e interagir com o Facebook APIs.
O Portal de desenvolvedores do Facebook
nota
A federação de bancos de identidades do Amazon Cognito não é compatível com o Login limitado 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 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
-
Selecione Bancos de identidades no console do Amazon Cognito
. Selecione um banco de identidades. -
Selecione a guia Acesso do usuário.
-
Selecione Adicionar provedor de identidade.
-
Selecione Facebook.
-
Insira o ID do aplicativo do OAuth projeto que você criou no Meta for Developers
. Para ter mais informações, consulte Login do Facebook nos documentos do Meta for Developers. -
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.
-
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.
-
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.
-
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.
-
-
-
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.
-
Para não aplicar nenhuma tag de entidade principal, selecione Inativo.
-
Para aplicar tags de entidade principal com base em declarações
sub
eaud
, selecione Usar mapeamentos padrão. -
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.
-
-
Selecione Salvar alterações.
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 OAuth token que o Amazon Cognito usa para gerar AWS credenciais para seu 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 definir o mapa de logins, faça uma chamada para refresh
ou get
para recuperar as AWS credenciais.
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 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 AWSCognitoCredentialsProvider
iOS – Swift
Para adicionar a autenticação do Facebook, primeiro siga o Guia do Facebook
nota
A federação de bancos de identidades do Amazon Cognito não é compatível com o Login limitado do Facebook
Para fornecer o token de acesso do Facebook ao Amazon Cognito, implemente o 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 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 OAuth token que o Amazon Cognito usa para AWS gerar credenciais para seu 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
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 } }); }