创建Login with Amazon项目

创建Login with Amazon项目

本节将介绍如何为Login with Amazon创建和配置新的Android项目,以及如何在项目中添加代码,以便用户使用Login with Amazon进行登录。如果您还没有用于Login with Amazon的应用项目,应根据以下说明在Android Studio创建一个应用项目。如果已有应用,请跳转到安装Login with Amazon程序库

在Android Studio中创建一个新项目

  1. 启动Android Studio
  2. File(文件)菜单中选择New(新建)Project(项目)
  3. 输入Application Name(应用名称),并为您的应用输入Company Name(公司名称)
  4. 输入与对应的Application(应用)Company Name(公司名称)。data-content程序包名称是Android应用的唯一标识符,通常形式为<code>com.companyname.appname</code>。data-content程序包名称是您在为应用注册Login with Amazon时选择的。如果您的应用尚未注册,请先选择程序包名称,项目创建完成后再遵循注册Login with Amazon中的说明进行操作。如果您的应用程序包与注册程序包名称不匹配,则无法成功进行Login with Amazon调用。
  5. 选择Minimum Required SDK(最低要求的SDK)API 11: Android 3.0 (Honeycomb)或更高版本,然后单击Next(下一步)。您也可以使用Minimum Required SDK(最低要求的SDK)API 8: Android 2.2 (Froyo)或更高版本(使用v4 Android支持库时)。
  6. 选择您要创建的活动类型,然后单击Next(下一步)
  7. 填写相关的详细信息,然后单击Finish(完成)

现在,您的工作区中将有一个新项目,可以用来调用Login with Amazon。

安装Login with Amazon程序库

如果您尚未下载适用于Android的Login with Amazon SDK,请参阅安装适用于Android的Login with Amazon SDK

  1. 使用计算机的文件系统,在适用于Android的Login with Amazon SDK中找到login-with-amazon-sdk.jar文件。将其复制到剪贴板。
  2. 在Android Studio中打开您的项目,并打开Project View(项目视图)
  3. Project View(项目视图)中,右键单击项目/应用根目录并选择Paste(粘贴)
  4. Project View(项目视图)中,右键单击login-with-amazon-sdk.jar并选择Add As Library(添加为库)

为您的项目设置网络权限

为使用Login with Amazon,您的应用必须要访问网络和网络状态信息。您的应用必须在Android清单中声明这些权限(如果尚未声明)。

  1. Project View(项目视图)双击并打开 AndroidManifest.xml
  2. 将以下代码行复制粘贴到application区域以外的文件中:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    

示例:

edited androidmanifest.xml

为您的项目添加API密钥

您的Android应用注册Login with Amazon时,会分配到一个。API密钥。亚马逊授权管理器将使用该标识符,向Login with Amazon标识您的应用。授权服务

如果您使用亚马逊应用商店为应用签名,亚马逊应用商店会自动提供API密钥。如果您没有使用亚马逊应用商店,亚马逊授权管理器在运行时将从assets目录中的api_key.txt文件中加载此值。

  1. 如果您尚未拥有API密钥,请参阅Android应用签名与API密钥,并按照检索Android API密钥中的说明操作。
  2. 在Android Studio的Project View(项目视图)中,右键单击assets文件夹,然后单击New(新建) > File(文件)。如果您没有assets文件夹,请右键单击项目的根目录,然后选择 NEW(新建) > Folder(文件夹) > Assets Folder(Assets文件夹)
  3. 将文件命名为api_key.txt
  4. 现在,编辑器窗口将用来处理名为api_key.txt的文本文件。将您的API密钥添加到文本文件
  5. File(文件)菜单中,单击Save(保存)

集成Login with Amazon和应用内购买的应用

使用Appstore SDK或应用内购买SDK (IAP SDK)的应用对API密钥有单独要求。

调试应用

对于应用的预发布或“调试”版本,必须创建API密钥并将其存储在项目中。

  1. 在项目的assets文件夹内创建一个名为api_key.txt的文件。必须将该文件放置在此特定目录中。
  2. 插入API密钥作为此api_key.txt文件中的唯一数据。

生产应用

对于应用的发布或“生产”版本,如果应用使用Appstore SDK,则必须为该应用的发布版本创建额外的API密钥。如果使用较旧的IAP SDK v2.0,并且您使用自己的证书为应用签名,还必须为应用的发布版本创建API密钥。反之,如果使用IAP SDK v2.0并授权亚马逊代表您为您的应用签名,则无需创建额外的API密钥。如需相关摘要,请参阅下表。

可以在开发者控制台中找到亚马逊应用商店证书哈希值,为现有应用创建API密钥。转到我的应用程序 > 选择您的应用 > 上传APK文件 > 应用商店证书哈希值

确定是否需要为应用创建API密钥
使用Appstore SDK 自我签名发布应用 生产或调试版本 如何为您的应用签名
生产 API密钥是为发布应用自动生成和注入的,无需执行任何其他操作。
生产 开发者必须使用自己的发布证书哈希值创建API密钥,并将其添加到资产中。
生产 开发者必须在开发者控制台中使用发布证书哈希值创建API密钥,并将其添加到资产中。
生产 开发者必须使用自己的发布证书哈希值创建API密钥,并将其添加到资产中。
任何 任何 调试 开发者必须使用自己的发布证书哈希值创建API密钥,并将其添加到资产中。

为您的活动处理配置更改

如果用户在登录时更改屏幕方向或者设备键盘状态,将会触发当前活动进行重新启动。重启将会意外关闭登录界面。为防止出现这种情况,应将活动设置为使用authorize方法手动处理配置更改。这将防止活动重新启动。

  1. Project View(项目视图)中,双击并打开AndroidManifest.xml文件。
  2. Application(应用)区域,找到处理Login with Amazon的活动(例如 MainActivity)。
  3. 为步骤2中找到的活动添加以下属性:

    android:configChanges="keyboard|keyboardHidden|orientation"
    

    适用于API 13或更高版本:

    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    
  4. File(文件)菜单中单击Save(保存)

现在,如果键盘或设备方向发生变化,Android将为您的活动调用onConfigurationChanged方法。除非要为应用处理配置更改,否则无需实现此函数。

为您的项目添加WorkflowActivity

用户单击Login with Amazon按钮时,API将启动网页浏览器向用户显示登录和同意页面。为使浏览器活动正常运行,必须将WorkflowActivity添加到向您的清单中。

如果您之前已集成Login with Amazon SDK,或者您的AndroidManifest.xml中已含有 com.amazon.identity.auth.device.authorization.AuthorizationActivity,则必须将其删除并替换为WorkflowActivity

  1. Project View(项目视图)中,双击并打开AndroidManifest.xml文件。
  2. 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 must use the full package name found in Manifest General Attributes -->
                <data android:host="${applicationId}" android:scheme="amzn"/>
            </intent-filter>
        </activity>