0

我们获得了应用程序的批准,并通过用户身份验证生成了令牌。我们甚至在授权过程中指定了所有必要的范围信息。我正在尝试使用令牌读取广告商和活动信息,但出现以下错误

示例 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 范围。

谢谢

4

1 回答 1

0

原则上,您不需要像 Pinterest 所说的那样指定范围:

默认情况下,当用户授予对您的应用程序的访问权限时,您将收到一个访问令牌,其中包含您的应用程序允许的所有可能范围。

如果我没记错的话,您可以在对此端点的响应中查看您的用户可以访问的所有范围:

https://www.pinterest.com/oauth/?client_id={app_id}&redirect_uri={redirect_uri}&response_type=code&state={optional}

调用此端点时请注意不要指定范围,因为它只能减少您将有权访问的范围,因为没有范围意味着所有范围。

希望有道理,

亨利

于 2021-04-07T14:12:48.423 回答