メニュー
Amazon Cognito
開発者ガイド (Version 最終更新日: 2017 年 8 月 26 日)

Facebook

Amazon Cognito は Facebook と統合して、モバイルアプリケーションユーザーにフェデレーションされた認証を提供します。このセクションでは、ID プロバイダーとして Facebook に対してアプリケーションを登録し、セットアップする方法について説明します。

Facebook のセットアップ

Facebook ユーザーの認証と、Facebook API との統合を開始するには、事前にアプリケーションを Facebook に登録する必要があります。

Facebook 開発者ポータルは、アプリケーションを設定するプロセスについて説明します。まだプロセスを実行していない場合は、Amazon Cognito ID プールで Facebook を統合するには、事前にプロセスを実行する必要があります。

Facebook をセットアップするには

  1. Facebook 開発者ポータルで、Facebook 認証情報を使用してログインします。

  2. [Apps] メニューの [Add a New App] を選択します。

  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 アクセストークンを使用して、Cognito ID に関連付けられた一意のユーザー ID を生成します。

Amazon Cognito コンソールでの外部プロバイダーの設定

Amazon Cognito コンソールのホームページから、次の操作を行います。

  1. フェデレーテッドアイデンティティの管理を選択します。

  2. 外部プロバイダーとして Facebook を有効にする ID プールの名前を選択します。ID プールの [Dashboard] ページが表示されます。

  3. [Dashboard] ページの右上にある、[Edit identity pool] を選択します。[Edit identity pool] ページが表示されます。

  4. 下にスクロールし、[Authentication providers] を選択して展開します。

  5. [Facebook] タブを選択します。

  6. [Unlock] を選択します。

  7. Facebook から取得した Facebook アプリ ID を入力して、[Save Changes] を選択します。

Facebook の使用

Android

Facebook 認証を提供するには、最初に『Facebook ガイド』に従ってアプリケーションにその SDK を含めます。次に、[Login with Facebook] ボタンを Android ユーザーインターフェイスに追加します。Facebook SDK はセッションオブジェクトを使用して、その状態を追跡します。Amazon Cognito は、このセッションオブジェクトからのアクセストークンを使用してユーザーを認証し、一意の ID を生成して、必要に応じて他の AWS リソースへのユーザーアクセスを付与します。

Facebook SDK でユーザーを認証したら、Amazon Cognito 認証情報プロバイダーにセッショントークンを追加します。

Facebook SDK 4.0 以降:

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

Facebook SDK 4.0 以前:

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

Facebook ログインプロセスにより、その SDK でシングルトンセッションが初期化されます。Facebook セッションオブジェクトには、認証されたエンドユーザー用に AWS 認証情報を生成するために Amazon Cognito で使用される OAuth トークンが含まれます。Amazon Cognito は、この特定の Facebook ID に一致しているユーザーの存在についてユーザーデータベースに確認するためにも、このトークンを使用します。既にユーザーに存在する場合、API は既存の ID を返します。それ以外の場合、新しい ID が返されます。ID はローカルデバイスでクライアント SDK によって自動的にキャッシュされます。

注記

ログインマップを設定した後、refresh または get を呼び出して、AWS の認証情報を実際に取得する必要があります。

iOS - Objective-C

Facebook 認証を追加するには、まず『Facebook ガイド』に従って、アプリケーションに Facebook SDK を統合します。次に、[Login with Facebook] ボタンを ユーザーインターフェイスに追加します。Facebook SDK はセッションオブジェクトを使用して、その状態を追跡します。Amazon Cognito では、このセッションオブジェクトからのアクセストークンを使用して、ユーザーを認証し、一意の Amazon Cognito ID にバインドします。

Amazon Cognito に Facebook アクセストークンを渡すには、AWSIdentityProviderManager プロトコルを実装します。

logins メソッドの実装で、以下のコード例に示すように、キーとして、AWSIdentityProviderFacebook を含み、その値として、認証された Facebook ユーザーからの現在のアクセストークンを含むディクショナリを返します。

Copy
- (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 をインスタンス化するときに、コンストラクターで identityProviderManager の値として AWSIdentityProviderManager を実装するクラスを渡します。詳細については、AWSCognitoCredentialsProvider リファレンスページに移動し、initWithRegionType:identityPoolId:identityProviderManager を選択してください。

iOS - Swift

Facebook 認証を追加するには、まず『Facebook ガイド』に従って、アプリケーションに Facebook SDK を統合します。次に、[Login with Facebook] ボタンを ユーザーインターフェイスに追加します。Facebook SDK はセッションオブジェクトを使用して、その状態を追跡します。Amazon Cognito では、このセッションオブジェクトからのアクセストークンを使用して、ユーザーを認証し、一意の Amazon Cognito ID にバインドします。

Amazon Cognito に Facebook アクセストークンを渡すには、AWSIdentityProviderManager プロトコルを実装します。

logins メソッドの実装で、以下のコード例に示すように、キーとして、AWSIdentityProviderFacebook を含み、その値として、認証された Facebook ユーザーからの現在のアクセストークンを含むディクショナリを返します。

Copy
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 をインスタンス化するときに、コンストラクターで identityProviderManager の値として AWSIdentityProviderManager を実装するクラスを渡します。詳細については、AWSCognitoCredentialsProvider リファレンスページに移動し、initWithRegionType:identityPoolId:identityProviderManager を選択してください。

JavaScript

Facebook 認証を提供するには、「ウェブ用の Facebook ログイン」に従って、ウェブサイトに [Login with Facebook] ボタンを追加します。Facebook SDK はセッションオブジェクトを使用して、その状態を追跡します。Amazon Cognito は、このセッションオブジェクトからのアクセストークンを使用してユーザーを認証し、一意の ID を生成して、必要に応じて他の AWS リソースへのユーザーアクセスを付与します。

Facebook SDK でユーザーを認証したら、Amazon Cognito 認証情報プロバイダーにセッショントークンを追加します。

Copy
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 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 ID に一致しているユーザーの存在についてユーザーデータベースに確認するためにも、このトークンを使用します。既にユーザーに存在する場合、API は既存の ID を返します。それ以外の場合、新しい ID が返されます。ID はローカルデバイスでクライアント SDK によって自動的にキャッシュされます。

注記

ログインマップを設定した後、refresh または get を呼び出して、AWS の認証情報を取得する必要があります。コード例については、JavaScript の README ファイルの「ユースケース 17: ユーザープールと Cognito ID の統合」を参照してください。

Unity

Facebook 認証を提供するには、最初に『Facebook ガイド』に従ってアプリケーションに SDK を含めてセットアップします。Amazon Cognito は 'FB' オブジェクトから Facebook アクセストークンを使用して、Cognito ID に関連付けられた一意のユーザー ID を生成します。

Facebook SDK でユーザーを認証したら、Amazon Cognito 認証情報プロバイダーにセッショントークンを追加します。

Copy
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.AccessToken を使用する前に、FB.IsLoggedIn が true であることを確認する必要があります。

Xamarin

Xamarin for Android:

Copy
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 for iOS:

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