如何使用Android的Alexa语音服务进行身份验证?

时间:2015-08-04 00:33:44

标签: android amazon

我正在尝试按照此页面上的说明从Android应用程序连接到Alexa语音服务。 https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/docs/authorizing-your-alexa-enabled-product-from-an-android-or-ios-mobile-app

Bundle options = new Bundle();
String scope_data = "{\"alexa:all\":{\"productID\":\"" + PRODUCT_ID +
                    "\", \"productInstanceAttributes\":           {\"deviceSerialNumber\":\"" + PRODUCT_DSN + "\"}}}";
options.putString(AuthzConstants.BUNDLE_KEY.SCOPE_DATA.val, scope_data);
options.putBoolean(AuthzConstants.BUNDLE_KEY.GET_AUTH_CODE.val, true);
options.putString(AuthzConstants.BUNDLE_KEY.CODE_CHALLENGE.val, CODE_CHALLENGE);
options.putString(AuthzConstants.BUNDLE_KEY.CODE_CHALLENGE_METHOD.val, "S256");
mAuthManager.authorize(APP_SCOPES, options, new AuthorizeListener());

首先,我不知道APP_SCOPES应该是什么。我把它设置为:

protected static final String[] APP_SCOPE = new String[]{"profile", "postal_code"};

但是我从服务器收到错误

AuthError cat= INTERNAL type=ERROR_SERVER_REPSONSE - com.amazon.identity.auth.device.AuthError: Error=invalid_scope error_description=An unknown scope was requested

3 个答案:

答案 0 :(得分:3)

APP_SCOPE 是:" alexa:all"

PRODUCT_DSN 可以是您想要的任何内容," 1234"根据约书亚弗兰克的建议(https://forums.developer.amazon.com/forums/message.jspa?messageID=18973#18973

PRODUCT_ID 是AVS Developper Portal中的ID(https://developer.amazon.com/edw/home.html#/avs/list

CODE_CHALLENGE 应用程序安全配置文件中的客户端密钥(应在S256中已经过哈希处理)

答案 1 :(得分:0)

问题不在于APP_SCOPES变量,它实际上是在范围数据中传递的PRODUCT_ID,PRODUCT_DSN变量。

我遇到了同样的问题,并在亚马逊开发人员论坛上提出了一些关于需要在这些变量中传递什么的查询 - Alexa authentication issue using beta SDK

PRODUCT_ID,PRODUCT_DSN&确定CODE_CHALLENGE变量,然后认证应该非常直接。

答案 2 :(得分:0)

APP_SCOPE应为“alexa:all”