python-3.x - Pinterest 广告 API v3 - 代码 401 授权错误
问题描述
我们获得了应用程序的批准,并通过用户身份验证生成了令牌。我们甚至在授权过程中指定了所有必要的范围信息。我正在尝试使用令牌读取广告商和活动信息,但出现以下错误
示例 Python 代码:
class BearerAuth(requests.auth.AuthBase):
def __init__(self, token):
self.token = token
def __call__(self, r):
r.headers["authorization"] = "Bearer " + self.token
return r
token=<token>
url='https://api.pinterest.com/ads/v3/advertisers/me/'
Advertisers = requests.get(url, auth=BearerAuth(token))
print(Advertisers.json())
回复:
{'error': {'message': 'None'}, 'code': 3, 'data': None, 'message': 'Authorization failed.', 'endpoint_name': 'ads_v3_get_advertiser_handler', 'status': 'failure'}
这是我用来生成令牌的 curl 命令。
curl -X PUT --url https://api.pinterest.com/v3/oauth/access_token/ --header "Authorization: Basic <base 64 encoded id:secret>" --data "code=<codeobtaineduponaccess>&redirect_uri=<redirecturl>&grant_type=authorization_code
我是否还需要在上述命令中添加范围信息,还是没有必要。我究竟做错了什么?有人可以向我解释一下。
注意:我可以使用令牌读取用户相关信息。我无法仅访问 read_advertisers、read_campaigns 范围。
谢谢
解决方案
原则上,您不需要像 Pinterest 所说的那样指定范围:
默认情况下,当用户授予对您的应用程序的访问权限时,您将收到一个访问令牌,其中包含您的应用程序允许的所有可能范围。
如果我没记错的话,您可以在对此端点的响应中查看您的用户可以访问的所有范围:
https://www.pinterest.com/oauth/?client_id={app_id}&redirect_uri={redirect_uri}&response_type=code&state={optional}
调用此端点时请注意不要指定范围,因为它只能减少您将有权访问的范围,因为没有范围意味着所有范围。
希望有道理,
亨利
推荐阅读
- swift - Flutter 没有构建 iOS 应用程序,这是一个快速的错误吗?
- javascript - 在正则表达式中接受字母数字字符、空格、点和破折号 [JavaScript]
- magento-1.9 - 默认商店视图打开不同商店的商店视图
- ruby-on-rails - 如何从应用程序本身调用 Rails 生成器?
- sql - SQL 存储视图快照和更改
- javascript - JS 是否会与有关“typeof null”的 ECMAScript 规范保持一致?
- c++ - 从特定程序中捕获音频
- vb.net - 确定目录名称路径
- powershell - Env: 和 [System.Environment] 有什么区别?
- c# - PreviewMouseDown 路由到边框/文本块而不是按钮