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

如何使用Python通过Refresh Token连接Bing API并获取数据?

解决Bing API刷新令牌授权及数据获取问题

1. 先用Refresh Token换取有效的Access Token

你之前直接拿Refresh Token请求报告API的思路是错的——Refresh Token的作用是在旧Access Token过期时,换取新的有效Access Token,真正用来请求API的是Access Token。

刷新令牌的请求细节

  • 请求地址:https://login.microsoftonline.com/common/oauth2/v2.0/token
  • 请求方式:必须用POST,不能用GET
  • 表单参数需包含这些字段:
    • grant_type:固定值为refresh_token
    • client_id:你的Client ID
    • client_secret:你的Client Secret
    • refresh_token:你持有的Refresh Token
    • scope:必须包含Bing Ads的权限范围,比如https://ads.microsoft.com/ads.manage offline_access

Python代码示例

import requests

token_url = "https://login.microsoftonline.com/common/oauth2/v2.0/token"
token_payload = {
    "grant_type": "refresh_token",
    "client_id": "你的ClientID",
    "client_secret": "你的ClientSecret",
    "refresh_token": "你的RefreshToken",
    "scope": "https://ads.microsoft.com/ads.manage offline_access"
}

response = requests.post(token_url, data=token_payload)
token_data = response.json()

if "access_token" in token_data:
    new_access_token = token_data["access_token"]
    # 部分场景会返回新的Refresh Token,建议保存下来供下次使用
    new_refresh_token = token_data.get("refresh_token")
else:
    print(f"刷新令牌失败:{token_data.get('error_description', '未知错误')}")
    exit()

2. 使用新Access Token请求报告API

拿到有效的Access Token后,再调用https://searchapi.pubcenter.microsoft.com/api/v1/reportJobs/接口,请求头里必须带上Bearer令牌及其他必要凭证。

请求注意事项

  • 请求方法:如果是获取已有报告任务用GET,如果是创建新报告任务需要用POST,具体以接口要求为准
  • 请求头必须包含:
    • Authorization:格式为Bearer {new_access_token}
    • DeveloperToken:你的开发者令牌
    • CustomerId:你的User ID(注意字段名可能为CustomerId,需确认和授权账号匹配)

Python代码示例

import requests

report_api_url = "https://searchapi.pubcenter.microsoft.com/api/v1/reportJobs/"
headers = {
    "Authorization": f"Bearer {new_access_token}",
    "DeveloperToken": "你的DeveloperToken",
    "CustomerId": "你的UserID"
}

response = requests.get(report_api_url, headers=headers)
report_data = response.json()

if response.status_code == 200:
    print("数据获取成功:", report_data)
else:
    print("请求失败:", report_data)

错误排查(针对AuthorizationFailure)

你遇到的凭证无效错误,大概率是以下原因导致:

  • Client ID/Client Secret、Refresh Token存在拼写错误,或者Refresh Token已过期/失效(刷新令牌后旧的Refresh Token可能会作废)
  • 刷新令牌时的scope未配置正确权限,必须包含Bing Ads的管理权限
  • 请求报告API时,CustomerId(或UserID)、Developer Token与授权账号不匹配
  • 用GET请求去刷新令牌,该接口仅支持POST请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:10:32