Login with Amazonプロジェクトを作成する
このセクションでは、Login with Amazonの新しいAndroidプロジェクトを作成する方法、プロジェクトの構成方法、Login with Amazonでユーザーをサインインするコードをプロジェクトに追加する方法を紹介します。Login with Amazonを使用するためのアプリプロジェクトがまだ準備できていない場合は、Android Studioに関する以下の手順に従って作成してください。アプリが準備できている場合は、Login with Amazonライブラリをインストールするに進んでください。
- Android Studioで新規プロジェクトを作成する
- Login with Amazonライブラリをインストールする
- プロジェクトのネットワークパーミッションを設定する
- プロジェクトにAPIキーを追加する
- アクティビティの構成変更を処理する
- プロジェクトにWorkflowActivityを追加する
Android Studioで新規プロジェクトを作成する
- Android Studioを起動します。
- [File] メニューから、[New] > [Project] の順に選択します。
- アプリの [Application Name] と [Company Name] を入力します。
- [Application] と [Company Name] には、Login with Amazonにアプリを登録したときに選択したパッケージ名に対応する名前を入力します。まだアプリを登録していない場合は、プロジェクトを作成した後、パッケージ名を選択して、Login with Amazonに登録する手順に従ってください。アプリのパッケージ名が登録済みのパッケージ名と一致しない場合、Login with Amazonを呼び出せません。
- [Minimum Required SDK] で
API 11: Android 3.0(Honeycomb)
以上を選択して [Next] をクリックします。または、[Minimum Required SDK] でAPI 8: Android 2.2(Froyo)
以上を使用することもできます(v4 Android Support Libraryを使用する場合)。 - 作成するアクティビティの種類を選択して、[Next] をクリックします。
- 関連する項目を入力して [Finish] をクリックします。
これで、Login with Amazonの呼び出しに使用できる新しいプロジェクトがワークスペースに作成されました。
Login with Amazonライブラリをインストールする
Android用のLogin with Amazon SDKをダウンロードしていない場合は、Android用のLogin with Amazon SDKをインストールするを参照してください。
- コンピューターのファイルシステムを使用し、Android用のLogin with Amazon SDK内でlogin-with-amazon-sdk.jarファイルを検索します。そのファイルをクリップボードにコピーします。
- Android Studioでプロジェクトを開き、[Project View] を開きます。
- [Project View] でプロジェクトまたはアプリの親ディレクトリを右クリックし、[Paste] を選択します。
- [Project View] で [login-with-amazon-sdk.jar] を右クリックし、[Add As Library] を選択します。
プロジェクトのネットワークパーミッションを設定する
アプリでLogin with Amazonを使用するには、インターネットに接続し、ネットワーク状態情報にアクセスする必要があります。Androidマニフェストで、アプリのこうしたパーミッションをアサートする必要があります(未実施の場合)。
- [Project View] から、[AndroidManifest.xml] をダブルクリックして開きます。
-
以下のコードをコピーし、このファイルの
application
ブロックの外に貼り付けます。<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
例:

プロジェクトにAPIキーを追加する
AndroidアプリをLogin with Amazonに登録すると、APIキーが割り当てられます。これは、Amazon Authorization ManagerがLogin with Amazon認可サービスでアプリを特定するために使用する識別子です。アプリのサインインにAmazonアプリストアを使用している場合は、アプリストアから自動的にAPIキーが提供されます。Amazonアプリストアを使用していない場合は、ランタイム時に、Amazon Authorization Managerがassets
ディレクトリ内のapi_key.txt
ファイルからこの値を読み込みます。
- APIキーがない場合は、Androidアプリの署名とAPIキーを参照し、Android APIキーを取得する手順に従ってください。
- Android Studioの [Project] ビューで
assets
フォルダを右クリックし、[New] > [File] の順に選択します。assets
フォルダがない場合は、プロジェクトの親ディレクトリを右クリックし、[New] > [Folder] > [Assets Folder] の順に選択します。 - ファイルに「api_key.txt」と名前を付けます。
- api_key.txtというテキストファイルのエディターウィンドウができます。APIキーをこのテキストファイルに追加します。
- [File] メニューから、[Save] を選択します。
api_key.txt
ファイルに文字(バイトオーダーマークなど)を追加する場合、Login with Amazon認可サービスに接続しようとするとERROR_ACCESS_DENIED
が表示されることがあります。この場合、先頭または末尾のスペース、改行、疑わしい文字をすべて削除します(たとえば、バイトオーダーマークを使用するエディターが、0xEF 0xBB 0xBF
などの16進数のシーケンスをapi_key.txt
ファイルの先頭に追加することがあります)。新しいAPIキーの取得を試みることもできます。アクティビティの構成変更を処理する
ユーザーがログインしようとしているときに、画面の向きやキーボードの状態を変更すると、実行中のアクティビティを再起動するよう求められます。この再起動により、ログイン画面が誤って終了します。このような事態を防ぐには、authorize
メソッドを使用するアクティビティで構成の変更を手動で処理できるように設定する必要があります。この設定により、アクティビティの再起動を回避できます。
- [Project View] で、[AndroidManifest.xml] をダブルクリックしてファイルを開きます。
- applicationブロックで、Login with Amazonを処理するアクティビティ(MainActivityなど)を検索します。
-
手順2で特定したアクティビティに次の属性を追加します。
android:configChanges="keyboard|keyboardHidden|orientation"
API 13以上の場合
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
- [File] メニューから、[Save] を選択します。
これで、キーボードやデバイスの向きが変わると、AndroidがアクティビティのonConfigurationChangedメソッドを呼び出すようになります。アプリでこうした構成の変更に対処する必要がなければ、この機能の実装は不要です。
プロジェクトにWorkflowActivityを追加する
ユーザーが [Login with Amazon] ボタンをクリックすると、APIがウェブブラウザを起動して、ログインと同意のページを表示します。ブラウザのこのアクティビティを機能させるには、WorkflowActivity
をマニフェストに追加する必要があります。
既にLogin with Amazon SDKと統合している場合、つまりAndroidManifest.xmlでcom.amazon.identity.auth.device.authorization.AuthorizationActivity
アクティビティを宣言している場合は、それを削除してWorkflowActivity
に置き換える必要があります。
- [Project View] で、[AndroidManifest.xml] をダブルクリックしてファイルを開きます。
-
applicationブロックに、次のコードを追加します。
<activity android:name="com.amazon.identity.auth.device.workflow.WorkflowActivity" android:theme="@android:style/Theme.NoDisplay" android:allowTaskReparenting="true" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <!-- android:hostは、Manifest General Attributesに含まれる完全なパッケージ名を使用する必要があります --> <data android:host="${applicationId}" android:scheme="amzn"/> </intent-filter> </activity>
${applicationId}
をこのアプリのパッケージ名に置き換えます。