首页 > 解决方案 > Python Token请求不同大小

问题描述

我正在尝试使用令牌(OAuth2)为 API 制作身份验证代码。我遇到的问题是 API 给了我一个长度为 664 的令牌,这是无效的,当我尝试使用该令牌访问其他 API 时,我收到错误 403。出于某种奇怪的原因,当我通过 Postman 进行调用时为了得到那个令牌,它给了我一个更长的令牌,如果我使用邮递员在我的代码中给我的那个令牌,我可以毫无问题地访问 API,似乎由于某种原因我的 python 代码正在截断令牌(?) .

这是我的代码:

    def get_auth_token(url):
        """
        get an auth token
        """
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    
        data = {
        'grant_type': 'client_credentials',
        'username': "john.doe",
        'password': "yuppy_duppy.*",
        'audience': 'https://website-token.com',
        'scope' : '',
        'client_id' : 'foo-api-client',
        'client_secret': 'bEeuADqpubMoPos6eLYd6UEMx'
        }
    
        try:
            response  = requests.post(url, headers=headers, data=data)
            response.raise_for_status()
            token = response.json()['access_token']
            print(response.raw)
            return token
        except requests.exceptions.HTTPError as errh:
            print(errh)
        except requests.exceptions.ConnectionError as errc:
            print(errc)
        except requests.exceptions.Timeout as errt:
            print(errt)
        except requests.exceptions.RequestException as err:
            print(err)

token = get_auth_token('https://url-to-request-token.com/token')
head = {'Authorization': "Bearer " + token}

request_result = requests.get(URL_ZOOM, headers=head)
print(request_result.status_code)

和状态码结果:

>> 403

我根据我的呼叫参数验证了 Postman 中的呼叫请求,它们根本没有区别。

Postman 给我一个有效令牌而我对服务器的请求给我一个无效令牌的原因可能是什么?

标签: pythonapipython-requestspostmantoken

解决方案


实际上,我在 Python 和 PHP 中处理 API 时遇到过几次这样的问题,并且在 Postman 中一切看起来都很好,但在我们的开发服务器上却无法工作。

这是一个技巧,如果您还不知道,请单击此处: 在此处输入图像描述

然后选择您选择的语言:

在此处输入图像描述

它实际上有两个用于 Python,具体取决于您是否要使用请求。从那里,您可以:

  1. 确保您的代码确实与正在运行的代码(片段)匹配 - 通过将它们放在您的编辑器中彼此相邻并比较它们。

  2. 注释掉你的代码,使用代码片段,看看它是否有效。如果它不起作用,那么它可能与您的局部变量或您在邮递员中手动设置但在生产中动态生成的其他东西有关。


推荐阅读