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

使用PowerShell调用Partner REST API获客户列表遇403错误求助

解决Partner Center API 403 Forbidden错误(非SDK方案)

核心问题定位

你当前使用client_credentials(客户端凭据)认证流,但应用注册仅配置了委托权限,而客户端凭据流要求应用级权限才能访问Partner Center API,这是触发403错误的根本原因。

修复步骤

1. 补充应用注册的应用级权限

  • 进入Microsoft Entra管理中心 → 应用注册 → 目标应用 → API权限
  • 点击添加权限 → 选择Microsoft Partner
  • 切换到应用权限标签,勾选Customer.Read.All(如需写入操作,额外勾选Customer.ReadWrite.All)
  • 点击添加权限后,点击授予管理员同意(必须完成此步骤才会生效)

2. 修正PowerShell客户端凭据流代码

原代码存在参数冗余问题,修正后的代码如下:

$appId = "你的应用ID"
$appSecret = "你的应用密钥"
$tenantId = "你的租户ID"

# 请求访问令牌
$tokenUrl = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
$body = @{
    grant_type    = "client_credentials"
    client_id     = $appId
    client_secret = $appSecret
    scope         = "https://api.partnercenter.microsoft.com/.default"
}

$response = Invoke-RestMethod -Method Post -Uri $tokenUrl -Body $body -ContentType "application/x-www-form-urlencoded"
$accessToken = $response.access_token

# 调用客户列表API
$apiUrl = "https://api.partnercenter.microsoft.com/v1/customers"
$headers = @{
    "Authorization" = "Bearer $accessToken"
    "Accept"        = "application/json"
}

try {
    $customerResponse = Invoke-RestMethod -Method Get -Uri $apiUrl -Headers $headers
    $customerResponse.items
} catch {
    Write-Host "请求错误: $($_.Exception.Message)"
    if ($_.ErrorDetails) {
        Write-Host "API返回详情: $($_.ErrorDetails.Message)"
    }
}

3. 验证权限关联

  • 确认你的全局管理员账号在Partner Center中被分配全局管理员或代理商管理员角色
  • 将应用注册的服务主体添加到Partner Center权限列表:进入Partner Center → 设置 → 用户和权限 → 应用程序 → 添加目标应用ID,并分配对应角色(如代理商管理员)

SDK代码失败补充说明

你提供的SDK代码同时使用ServicePrincipal和UseAuthorizationCode参数,二者冲突:UseAuthorizationCode用于用户交互的授权码流,ServicePrincipal对应客户端凭据流,需二选一。若要基于委托权限使用授权码流,需移除ServicePrincipal参数,确保代码能弹出登录窗口完成授权。

内容的提问来源于stack exchange,提问作者Bernietechy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:18:24