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キーの取得を試みることもできます。Login with Amazonとアプリ内課金(IAP)が統合されているアプリ
Appstore SDKまたはIAP SDKを使用するアプリでは、APIキーの要件が個別に異なります。
デバッグ版アプリ
プレリリース(デバッグ)版アプリの場合は、APIキーを作成してプロジェクトに保存する必要があります。
- プロジェクトのassetsフォルダに
api_key.txt
という名前のファイルを作成します。このファイルは、必ずassetsフォルダに配置するようにしてください。 api_key.txt
ファイルにAPIキーを挿入します。これ以外のデータは含めないでください。
実稼働版アプリ
リリース(実稼働)版アプリで、Appstore SDKを使用している場合は、そのアプリ用に追加のAPIキーを作成する必要があります。また、以前のIAP SDK v2.0を使用していて、独自の証明書を使用してアプリに署名する場合も、そのアプリ用のAPIキーを作成する必要があります。これに対して、IAP SDK v2.0を使用していて、アプリへの署名をAmazonに任せる場合は、新たなAPIキーを作成する必要はありません。概要については、以下の表を参照してください。
既存のアプリのAPIキーを作成するには、開発者コンソールでAmazonアプリストアの証明書ハッシュ値を確認してください。[マイアプリ] をクリックしてアプリを選択し、[APKファイル] > [Amazonアプリストアの証明書ハッシュ] の順にクリックします。
Appstore SDKの使用 | リリース版アプリへの自己署名 | 実稼働版/デバッグ版 | アプリの署名方法 |
---|---|---|---|
実稼働版 | APIキーは自動的に生成され、リリース版アプリに挿入されるため、何もする必要はありません。 | ||
実稼働版 | 独自のリリース版証明書ハッシュを使用して開発者側でAPIキーを作成し、アセットに追加する必要があります。 | ||
実稼働版 | 開発者コンソールから取得したリリース版証明書ハッシュを使用して開発者側でAPIキーを作成し、アセットに追加する必要があります。 | ||
実稼働版 | 独自のリリース版証明書ハッシュを使用して開発者側でAPIキーを作成し、アセットに追加する必要があります。 | ||
任意 | 任意 | デバッグ版 | 独自のリリース版証明書ハッシュを使用して開発者側で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}
をこのアプリのパッケージ名に置き換えます。