You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

调用Partner Center API获取客户列表时遇到403 Forbidden错误的求助

调用Partner Center API获取客户列表时遇到403 Forbidden错误的求助

问题背景

我打算使用Partner Center API完成一些操作(本次尝试获取客户列表),已经在租户中完成了以下配置:

  • 已配置API权限(已授予租户级权限)
  • 应用支持多租户账户
  • 已开启公共客户流程
  • 应用已成功添加到Partner Center的应用列表中

我的代码

我编写了如下Python脚本调用Partner Center API:

import requests
import json

client_id = "myAppID"
client_secret = "myAppSecret"
tenant_id = "myTenantID"

def getTokenPC():
    url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
    payload = {
        "grant_type": "client_credentials",
        "client_id": client_id,
        "client_secret": client_secret,
        "scope": "https://api.partnercenter.microsoft.com/.default"
    }
    r = requests.post(url, data=payload)
    r.raise_for_status()
    return r.json()["access_token"]

def getClients(token):
    url = f"https://api.partnercenter.microsoft.com/v1/customers"
    headers = {
        "Authorization": f"Bearer {token}",
        "Accept": "application/json",
    }
    r = requests.get(url, headers=headers)
    r.raise_for_status()
    return r.json()

partnerCenterToken = getTokenPC()
clients = getClients(partnerCenterToken)

遇到的问题

运行脚本时可以成功获取Bearer令牌,但调用API获取客户列表时,触发了403禁止访问错误:

requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api.partnercenter.microsoft.com/v1/customers

我在论坛中搜索过相关内容,有些帖子提到需要给应用分配“Manager”角色,但我在Partner Center中找不到这个配置项。我猜测问题出在令牌缺少足够的权限来访问API,但不确定具体原因。如果需要更多信息,请告知。


问题原因与解决方案

这个403错误的核心原因是你的应用在Partner Center中没有被分配足够的权限角色,导致即使获取了令牌,也没有权限读取客户数据。下面是具体的配置步骤:

步骤1:在Partner Center中给应用分配角色

  1. 登录Partner Center,点击右上角的齿轮图标进入合作伙伴设置
  2. 选择用户和角色选项卡
  3. 切换到应用程序子标签页,找到你创建的目标应用
  4. 点击应用名称进入详情页,点击页面上的添加角色按钮
  5. 在弹出的角色列表中,根据需求选择合适的角色:
    • 如果需要全权限操作,选全局管理员代理商全局管理员
    • 仅需读取客户数据的话,选只读管理员即可
  6. 保存配置,等待5-10分钟让权限生效

步骤2:验证与排查

重新运行你的Python脚本,此时应该可以正常获取客户列表了。如果仍然报错,可以按以下方式排查:

  • 用jwt.ms工具解码你的Bearer令牌,检查roles字段中是否包含对应的Partner Center权限(比如Customer.Read.AllDirectory.Read.All等)
  • 确认你的应用确实是在Partner Center的应用列表中完成关联的,而非仅在Azure AD中注册
  • 检查Azure AD的API权限设置,确认https://api.partnercenter.microsoft.com/.default权限是租户级管理员已同意的状态

补充说明

之前提到的“Manager”角色是旧版Partner Center的称呼,新版中已经整合到用户和角色-应用程序的权限配置里了,按照上述步骤就能找到对应的入口。另外,一定要确保你的应用是用合作伙伴租户的Azure AD注册的,普通租户的Azure AD应用无法关联Partner Center的权限体系哦。

火山引擎 最新活动