python令牌请求大小不同

yh2wf1be  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(325)

我正在尝试使用令牌(oauth2)为api生成身份验证代码。我的问题是api给了我一个长度为664的令牌,这是无效的,当我尝试使用该令牌访问另一个api时,我得到错误403。出于某种奇怪的原因,当我通过postman调用以获取该令牌时,它给了我一个更长的令牌,如果我在代码中使用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 给我一个有效的令牌,而我对服务器的请求给我一个无效的令牌?

ntjbwcob

ntjbwcob1#

事实上,我已经在python和php中处理过好几次API,在postman中一切看起来都很好,但在我们的开发服务器上却无法工作。
这里有一个技巧,如果您还不知道,请单击此处:

然后选择您选择的语言:

根据您是否希望使用请求,python实际上有两个。从那里,您可以:
确保您的代码确实与正在工作的代码(代码段)相匹配,方法是将它们放在编辑器中并相互比较。
注解掉你的代码,使用代码片段,看看它是否有效。如果它不起作用,那么它可能与局部变量或在postman中手动设置但在生产中动态生成的其他变量有关。

相关问题