OrderCloud:GET /v1/me显示Shopper角色存在,请求产品却提示缺失?
问题描述
我正在学习OrderCloud的买方视角产品查看教程,已创建买方组织和买方用户buyer01,并将产品添加至买方目录,希望验证buyer01可访问该产品。
使用buyer01的凭证获取认证令牌后,发送GET请求至/v1/me,返回结果如下:
{ "Buyer": { "ID": "BUYER_ORGANIZATION", "DefaultCatalogID": "BUYER_ORGANIZATION" }, "Supplier": null, "Seller": { "ID": "XXXXXXXXXXXXX" }, "ID": "BUYER_USER", "CompanyID": "BUYER_ORGANIZATION", "Username": "buyer01", "Password": null, "FirstName": "Buyer", "LastName": "User", "Email": "buyer@email.com", "Phone": null, "TermsAccepted": null, "Active": true, "xp": null, "AvailableRoles": [ "MeAdmin", "PasswordReset", "Shopper" ], "Locale": null, "DateCreated": "2022-12-21T00:43:53.507+00:00", "PasswordLastSetDate": "2022-12-21T00:43:53.543+00:00" }
但当我发送GET请求至/v1/me/products以查看该用户可访问的产品时,收到403 Forbidden响应,响应体如下:
{ "Errors": [ { "ErrorCode": "Auth.InsufficientRoles", "Message": "User does not have role(s) required to perform this action.", "Data": { "RequiredRoles": [ "Shopper" ], "AssignedRoles": [ "MeAdmin", "PasswordReset" ] } } ] }
为何第一次请求显示Shopper角色存在,而第二次请求却提示该角色缺失?
原因分析与解决办法
这是因为AvailableRoles字段仅表示该用户可以被分配的角色范围,而非实际已分配并生效的角色。OrderCloud中,用户的角色需要明确分配后才能获得对应权限:
角色区分:
AvailableRoles:系统允许该用户拥有的角色列表,是角色分配的可选范围- 实际生效的角色需要通过用户角色分配操作绑定到用户(或用户所在的组)
解决步骤:
- 针对
buyer01用户,在买方组织维度分配Shopper角色 - 重新获取认证令牌(确保权限更新生效)
- 再次调用
/v1/me/products接口即可正常访问
- 针对
内容的提问来源于stack exchange,提问作者Dan Solovay
相关产品推荐
相关产品推荐

