You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:10:49