2014年8月24日

Amazon Cognito のサンプルを動かす

Amazon Cognito という AWS の ID 管理及びデータ同期のサービスがあります。
このサービスのサンプルを使ってみます。

サンプルソースの取得


サンプルソースはこちらにあります。
https://github.com/awslabs/aws-sdk-android-samples/tree/master/CognitoSyncDemo

こちらから他のサンプルもまとめて取得するとよいでしょう。

README.md に従って Eclipse インポートします。

プロジェクトの libs ディレクトリに mobile SDK の jar ファイルをコピーします。
aws-android-sdk-X.X.X-core.debug.jar
extras/aws-android-sdk-X.X.X-cognito.debug.jar

project target と FacebookSDK のパスを設定します。
https://github.com/awslabs/aws-sdk-android-samples/blob/master/CognitoSyncDemo/project.properties
target には API Level を設定します。

FacebookSDK はこちらにあるものを使いました。Facebook Login を使わない場合でもコンパイルに必要です。
https://github.com/awslabs/aws-sdk-android-samples/tree/master/FacebookSDK

Facebook App の登録

Facebook App の登録をします。

https://developers.facebook.com/apps/から「Create a New App」を押します。
Display Name と カテゴリは適当に入力します。
App ID が発行されます。


Settings から 「+ Add Platform」を押して、Android を選択します。
Package Name、Class Name を設定します。
Package Name: com.amazonaws.cognito.sync.demo
Class Name: com.amazonaws.cognito.sync.demo.MainActivity


Cognito の設定


Cognito の Identity Pool を作ります。
https://console.aws.amazon.com/cognito/

Configure Identity Providers の Facebook App ID に先ほど取得した Facebook のアプリケーション ID を設定します。
ログイン無しでも使えるよにするには「Enable Access to Unauthenticated Identities」にチェックを入れてください。

Role はアプリ側で紐づけるため後で作成しても問題ありませんが、とりあえず作成します。


ソースに各種 ID を設定


CognitoSyncClientManager.java の定数を更新します。
https://github.com/awslabs/aws-sdk-android-samples/blob/master/CognitoSyncDemo/src/com/amazonaws/cognito/sync/demo/CognitoSyncClientManager.java

AWS_ACCOUNT_ID : AWS アカウント ID
IDENTITY_POOL_ID : 作成した Cognito の Identity Pool ID
UNAUTH_ROLE_ARN : 認証なしユーザに割り当てる IAM Role の ARN
AUTH_ROLE_ARN : 認証済みユーザに割り当てる IAM Role の ARN
/**
     * account id and pool id associated with the app
     */
    private static final String AWS_ACCOUNT_ID = "123456789012";
    private static final String IDENTITY_POOL_ID = "us-east-1:00000000-0000-0000-0000-000000000000";
    /**
     * the role arn to be assumed. You can provide a role arn for unauthorized
     * user and one for authorized.
     */
    private static final String UNAUTH_ROLE_ARN = "arn:aws:iam::123456789012:role/Cognito_teketouUnauth_DefaultRole";
    private static final String AUTH_ROLE_ARN = "arn:aws:iam::123456789012:role/Cognito_teketouAuth_DefaultRole";

res/values/strings.xml の facebook_app_id にを設定します。
https://github.com/awslabs/aws-sdk-android-samples/blob/master/CognitoSyncDemo/res/values/strings.xml
<resources>

    <string name="app_name">CognitoSyncDemo</string>
    <string name="facebook_app_id">123456789012345</string>

</resources>

サンプル起動


アプリを起動します。


Facebook Login ボタンで Facebook の認証ページが表示されます。


認証に成功すると、ボタンが消えます。


Cognito のコンソールでも、Facebook の認証がされたことがわかります。


認証ができたので、次は API を実際に実行することろを試したいです。

0 コメント:

コメントを投稿