Facebook(자격 증명 풀) - Amazon Cognito

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

Facebook(자격 증명 풀)

Amazon Cognito 자격 증명 풀은 Facebook과 통합되어 모바일 애플리케이션 사용자를 위해 연동된 인증을 제공합니다. 이 단원에서는 Facebook을 자격 증명 공급자로 사용하여 애플리케이션을 등록하고 설정하는 방법을 설명합니다.

Facebook 설정

Facebook 사용자 인증 및 Facebook API와의 상호 작용을 시작하려면 먼저 Facebook을 통해 애플리케이션을 등록해야 합니다.

Facebook 개발자 포털에서 애플리케이션 설정 프로세스에 연결됩니다. 이 프로세스를 완료해야 Amazon Cognito 자격 증명 풀에서 Facebook을 통합할 수 있습니다.

Facebook을 설정하려면

  1. Facebook 개발자 포털에서 Facebook 자격 증명으로 로그인합니다.

  2. 메뉴에서 새 앱 추가를 선택합니다.

  3. 플랫폼을 선택하고 빠른 시작 프로세스를 완료합니다.

Android

Facebook 로그인 통합에 대한 자세한 내용이 Facebook 시작 안내서에 나와 있습니다.

iOS - Objective-C

Facebook 로그인 통합에 대한 자세한 내용이 Facebook 시작 안내서에 나와 있습니다.

iOS - Swift

Facebook 로그인 통합에 대한 자세한 내용이 Facebook 시작 안내서에 나와 있습니다.

JavaScript

Facebook 로그인 통합에 대한 자세한 내용이 Facebook 시작 안내서에 나와 있습니다.

Unity

Facebook 로그인 통합에 대한 자세한 내용이 Facebook 시작 안내서에 나와 있습니다.

Xamarin

Facebook 인증을 제공하려면 먼저 아래의 적합한 흐름에 따라 애플리케이션에 Facebook SDK를 포함하고 설정합니다. Amazon Cognito 자격 증명 풀은 Facebook 액세스 토큰을 사용하여 Amazon Cognito 자격 증명에 연결된 고유한 사용자 식별자를 생성합니다.

Amazon Cognito 연동 자격 증명 콘솔에서 외부 공급자 구성

다음 절차를 사용하여 외부 공급자를 구성합니다.

  1. Amazon Cognito 콘솔에서 자격 증명 풀 관리를 선택합니다.

  2. Facebook을 외부 공급자로 허용할 자격 증명 풀의 이름을 선택합니다. 자격 증명 풀에 대한 대시보드 페이지가 표시됩니다.

  3. 대시보드 페이지의 우측 상단 모서리에서 자격 증명 풀 편집을 선택합니다. 자격 증명 풀 편집 페이지가 표시됩니다.

  4. 아래로 스크롤하고 인증 공급자를 선택하여 확장합니다.

  5. Facebook 탭을 선택합니다.

  6. 잠금 해제를 선택합니다.

  7. Facebook에서 가져온 Facebook 앱 ID를 입력하고 변경 사항 저장을 선택합니다.

Facebook 사용

Android

Facebook 인증을 제공하려면 먼저 Facebook 안내서에 따라 해당 애플리케이션에 SDK를 포함하십시오. 그런 다음 "Facebook으로 로그인" 버튼을 Android 사용자 인터페이스에 추가합니다. Facebook SDK에서 세션 객체를 사용하여 그 상태를 추적합니다. Amazon Cognito는 이 세션 객체에서 받은 액세스 토큰을 사용하여 사용자를 인증하고 고유한 식별자를 생성하며 필요할 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 허용합니다.

Facebook SDK로 사용자를 인증한 후에는 Amazon Cognito 자격 증명 공급자에 세션 토큰을 추가하십시오.

Facebook SDK 4.0 이상:

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

Facebook SDK 4.0 이전:

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

Facebook 로그인 프로세스에서 해당 SDK의 singleton 세션을 초기화합니다. Facebook 세션 객체에는 인증된 최종 사용자의 AWS 자격 증명을 생성하기 위해 Amazon Cognito에 사용되는 OAuth 토큰이 포함되어 있습니다. Amazon Cognito에서는 토큰을 사용하여 이 특정한 Facebook 자격 증명과 일치하는 사용자가 있는지 사용자 데이터베이스를 확인하기도 합니다. 사용자가 이미 있으면 API가 기존의 식별자를 반환합니다. 그렇지 않으면 새 식별자가 반환됩니다. 식별자는 로컬 디바이스에서 클라이언트 SDK에 의해 자동으로 캐시됩니다.

참고

로그인 맵을 설정한 후 refresh 또는 get을 호출하여 실제로 AWS 자격 증명을 가져와야 합니다.

iOS - Objective-C

Facebook 인증을 추가하려면 먼저 Facebook 안내서를 따라 Facebook SDK를 애플리케이션에 통합하십시오. 그런 다음 Facebook으로 로그인 버튼을 귀하의 사용자 인터페이스에 추가합니다. Facebook SDK에서 세션 객체를 사용하여 그 상태를 추적합니다. Amazon Cognito는 이 세션 객체에서 받은 액세스 토큰을 사용하여 사용자를 인증하고 고유한 Amazon Cognito 자격 증명 풀(연동 자격 증명)에 바인딩합니다.

Amazon Cognito에 Facebook 액세스 토큰을 제공하려면 AWSIdentityProviderManager 프로토콜을 구현하십시오.

logins 메서드를 구현할 때 AWSIdentityProviderFacebook이 포함된 딕셔너리를 반환합니다. 다음 코드 예제와 같이 이 딕셔너리는 키 역할을 하고 인증된 Facebook 사용자에게서 받은 현재 액세스 토큰은 값 역할을 합니다.

- (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"}]]; } }

AWSCognitoCredentialsProvider를 인스턴스화할 때 생성자에서 AWSIdentityProviderManager의 값으로 identityProviderManager를 구현하는 클래스를 전달하십시오. 자세한 내용을 보려면 AWSCognitoCredentialsProvider 참조 페이지에서 initWithRegionType:identityPoolId:identityProviderManager를 선택하십시오.

iOS - Swift

Facebook 인증을 추가하려면 먼저 Facebook 안내서를 따라 Facebook SDK를 애플리케이션에 통합하십시오. 그런 다음 Facebook으로 로그인 버튼을 귀하의 사용자 인터페이스에 추가합니다. Facebook SDK에서 세션 객체를 사용하여 그 상태를 추적합니다. Amazon Cognito는 이 세션 객체에서 받은 액세스 토큰을 사용하여 사용자를 인증하고 고유한 Amazon Cognito 자격 증명 풀(연동 자격 증명)에 바인딩합니다.

Amazon Cognito에 Facebook 액세스 토큰을 제공하려면 AWSIdentityProviderManager 프로토콜을 구현하십시오.

logins 메서드를 구현할 때 AWSIdentityProviderFacebook이 포함된 딕셔너리를 반환합니다. 다음 코드 예제와 같이 이 딕셔너리는 키 역할을 하고 인증된 Facebook 사용자에게서 받은 현재 액세스 토큰은 값 역할을 합니다.

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"])) } }

AWSCognitoCredentialsProvider를 인스턴스화할 때 생성자에서 AWSIdentityProviderManager의 값으로 identityProviderManager를 구현하는 클래스를 전달하십시오. 자세한 내용을 보려면 AWSCognitoCredentialsProvider 참조 페이지에서 initWithRegionType:identityPoolId:identityProviderManager를 선택하십시오.

JavaScript

Facebook 인증을 제공하려면 웹용 Facebook 로그인에 따라 웹 사이트에 "Facebook으로 로그인" 버튼을 추가하십시오. Facebook SDK에서 세션 객체를 사용하여 그 상태를 추적합니다. Amazon Cognito는 이 세션 객체에서 받은 액세스 토큰을 사용하여 사용자를 인증하고 고유한 식별자를 생성하며 필요할 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 허용합니다.

Facebook SDK로 사용자를 인증한 후에는 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.'); } });

Facebook SDK는 인증된 최종 사용자의 AWS 자격 증명을 생성하기 위해 Amazon Cognito에 사용되는 OAuth 토큰을 가져옵니다. Amazon Cognito에서는 토큰을 사용하여 이 특정한 Facebook 자격 증명과 일치하는 사용자가 있는지 사용자 데이터베이스를 확인하기도 합니다. 사용자가 이미 있으면 API가 기존의 식별자를 반환합니다. 그렇지 않으면 새 식별자가 반환됩니다. 식별자는 로컬 디바이스에서 클라이언트 SDK에 의해 자동으로 캐시됩니다.

참고

로그인 맵을 설정한 후 refresh 또는 get을 호출하여 자격 증명을 가져와야 합니다. 코드 예제는 JavaScript README 파일의 "Use Case 17, Integrating User Pools with Cognito Identity"를 참조하십시오.

Unity

Facebook 인증을 제공하려면 먼저 Facebook 안내서에 따라 애플리케이션에 해당 SDK를 포함하고 설정하십시오. Amazon Cognito는 'FB' 객체에서 받은 Facebook 액세스 토큰을 사용하여 Amazon Cognito 자격 증명에 연결된 고유한 사용자 식별자를 생성합니다.

Facebook SDK로 사용자를 인증한 후에는 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); }

반드시 FB.Login()을 호출해야 합니다. FB.IsLoggedIn을 사용하기 전에는 FB.AccessToken이 true입니다.

Xamarin

Android용 Xamarin:

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

iOS용 Xamarin:

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