ASP.NET Core集成Prime Gaming时games::prime作用域配置报错
问题:ASP.NET Core 3.1集成Amazon Prime Gaming登录时请求games::prime作用域返回无效作用域错误
我在ASP.NET Core 3.1 Web应用中配置Amazon外部登录能力以集成Prime Gaming功能,全程参考官方Amazon Prime Gaming Integration文档操作。目前已成功将Amazon userId、访问令牌、刷新令牌及令牌过期时间存储至数据库,但按照文档要求发起POST请求调用/api/account/link接口同步账号时操作失败,返回错误提示:
Not all permissions are authorized
查阅官方Tips-Troubleshoot故障排查文档后得知,接口调用需要同时配置games::prime和profile两个权限作用域,而此前仅配置了profile作用域。但在配置中添加games::prime作用域时,系统抛出无效作用域异常:
invalid_scope;Description=An unknown scope was requested
我使用AspNet.Security.OAuth.Amazon库实现Amazon外部登录功能,以下是Startup.cs文件中的相关配置代码:
services.AddAuthentication() .AddAmazon(o => { o.ClientId = clientId; o.ClientSecret = clientSecret; o.Scope.Add("profile"); o.Scope.Add("games::prime"); o.SaveTokens = true; // get access token and refresh token o.AccessDeniedPath = new PathString("/Home/WebAppSetting"); })
如果从作用域配置中移除games::prime,整个登录流程可正常运行,但调用账号关联接口时会再次返回Not all permissions are authorized错误。已检索Amazon官方站点的相关公开文档,未找到有效解决指引。
解答
问题根因
两个错误由三个独立的配置遗漏共同导致:
games::prime是Prime Gaming专属的受限OAuth作用域,不对普通Amazon Login With Amazon(LWA)应用默认开放。未完成Prime Gaming集成资质审核的应用请求该作用域时,会直接返回invalid_scope错误。AspNet.Security.OAuth.Amazon库的默认配置针对通用Amazon登录场景适配,部分版本的库默认端点路由不支持Prime专属作用域校验。- 之前存储的旧访问令牌仅包含
profile作用域授权,即使后续配置正确,旧令牌也无法通过/api/account/link接口的权限校验。
修复步骤
- 前置资质校验:登录Amazon开发者后台,进入对应应用的配置页面,确认已提交Prime Gaming集成申请并通过官方审核,确认应用的可用权限列表中已包含
games::prime作用域。这是所有配置生效的前提,未通过审核的应用无法请求该作用域。 - 修改OAuth配置:调整
Startup.cs中的Amazon登录配置,显式指定官方LWA端点、清空默认注入的无关作用域后再添加所需权限,参考配置如下:
services.AddAuthentication() .AddAmazon(o => { o.ClientId = clientId; o.ClientSecret = clientSecret; // 显式指定LWA官方标准端点,适配Prime Gaming权限校验 o.AuthorizationEndpoint = "https://www.amazon.com/ap/oa"; o.TokenEndpoint = "https://api.amazon.com/auth/o2/token"; o.UserInformationEndpoint = "https://api.amazon.com/user/profile"; // 清空库默认添加的无关作用域,避免权限校验冲突 o.Scope.Clear(); o.Scope.Add("profile"); o.Scope.Add("games::prime"); o.SaveTokens = true; o.AccessDeniedPath = new PathString("/Home/WebAppSetting"); });
- 清理旧缓存数据:清除浏览器中当前站点的所有登录Cookie,删除数据库中之前存储的仅含
profile权限的旧令牌记录,避免旧授权缓存影响新权限申请。 - 重新授权获取令牌:走完整的Amazon授权登录流程,获取新的访问令牌。拿到令牌后可解码JWT内容校验
scope字段,确认同时包含profile和games::prime两个值后,再调用/api/account/link接口即可正常完成账号关联。
常见排查点
- 如果配置修改后仍然返回
invalid_scope错误,优先联系Prime Gaming技术支持确认应用的games::prime作用域权限是否已正常开通,该类问题90%以上由资质未审核通过导致。 - 如果令牌已包含两个作用域但调用关联接口仍然报权限错误,检查接口请求头中
Authorization字段的格式是否正确,是否错误使用了ID令牌而非访问令牌发起请求。
内容的提问来源于stack exchange,提问作者Hoang Minh
相关产品推荐
相关产品推荐

