Alexa账号关联启用技能报错Invalid account linking credentials与Azure B2C集成问题
疑问解答
- 关于
redirectUri的填写:你理解有误,该参数不是Alexa获取令牌的链接,而是Azure B2C完成用户授权后回传授权码的回调地址,必须填写Alexa开发者控制台对应技能「账号关联」页面提供的官方重定向地址,且该地址要完整添加到Azure B2C应用的重定向白名单中,二者必须完全一致(包括大小写、末尾斜杠、参数等所有细节)。 - 关于请求类型:OAuth2.0授权码流中,获取用户授权码的请求为GET类型,使用授权码兑换访问令牌的请求为POST类型,该规则同时适配Alexa要求和Azure B2C的实现标准。
- 关于「Invalid account linking credentials」指向的凭证:该报错通常对应两类凭证问题,一是你在Alexa控制台填写的Azure B2C应用客户端ID、客户端密钥与实际值不匹配;二是令牌兑换过程中提交的参数(授权码、redirect_uri、scope等)无效或不匹配,也可能是Azure B2C返回的令牌格式不符合Alexa的要求。
解决方案步骤
- 先核对重定向配置:登录Alexa开发者控制台,进入对应技能的账号关联配置页,复制所有亚马逊提供的重定向URI,将其全部添加到Azure B2C注册应用的「Web」类型重定向白名单中,不要选择SPA或原生应用类型的重定向配置。
- 核对Alexa控制台的账号关联参数:客户端ID填写Azure B2C应用的应用ID,客户端密钥填写Azure B2C生成的有效客户端密钥,授权URI、访问令牌URI填写Azure B2C对应用户流的官方端点,scope配置至少要包含
openid。 - 核对授权请求参数:发起授权请求时携带的
redirect_uri、client_id、scope要和Alexa控制台的配置完全一致,response_type必须固定为code。 - 核对Azure B2C配置:确保对应的用户流开启了授权码流支持,关闭客户端证书校验要求,允许使用客户端ID+密钥的方式进行身份认证,返回的令牌必须包含
access_token、token_type(值为Bearer)、expires_in、refresh_token必填字段。 - 本地验证链路:可以用接口调试工具模拟Alexa的令牌请求,往Azure B2C令牌端点发送POST请求,携带
grant_type=authorization_code、code=实际获取的授权码、redirect_uri=你使用的亚马逊重定向地址、client_id、client_secret参数,先确保该请求能正常返回符合要求的令牌,再对接Alexa的流程。
内容的提问来源于stack exchange,提问作者Sorin Penteleiciuc
相关产品推荐
相关产品推荐

