Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求库如何使用单个令牌传递授权头_Python_Get_Authorization_Token_Python Requests - Fatal编程技术网

Python请求库如何使用单个令牌传递授权头

Python请求库如何使用单个令牌传递授权头,python,get,authorization,token,python-requests,Python,Get,Authorization,Token,Python Requests,我有一个请求URI和一个令牌。如果我使用: curl -s "<MY_URI>" -H "Authorization: TOK:<MY_TOKEN>" curl-s”“-H”授权:TOK: 等等,我得到一个200并查看相应的JSON数据。 因此,我安装了请求,当我尝试访问此资源时,我得到了403,可能是因为我不知道传递该令牌的正确语法。有人能帮我弄清楚吗? 这就是我所拥有的: import sys,socket import requests r = request

我有一个请求URI和一个令牌。如果我使用:

curl -s "<MY_URI>" -H "Authorization: TOK:<MY_TOKEN>"
curl-s”“-H”授权:TOK:
等等,我得到一个200并查看相应的JSON数据。 因此,我安装了请求,当我尝试访问此资源时,我得到了403,可能是因为我不知道传递该令牌的正确语法。有人能帮我弄清楚吗? 这就是我所拥有的:

import sys,socket
import requests

r = requests.get('<MY_URI>','<MY_TOKEN>')
r. status_code
导入系统,套接字 导入请求 r=请求。获取(“”,“”) R状态代码 我已经试过了:

r = requests.get('<MY_URI>',auth=('<MY_TOKEN>'))
r = requests.get('<MY_URI>',auth=('TOK','<MY_TOKEN>'))
r = requests.get('<MY_URI>',headers=('Authorization: TOK:<MY_TOKEN>'))
r=requests.get(“”,auth=(“”))
r=requests.get(“”,auth=('TOK',“”))
r=requests.get(“”,headers=('Authorization:TOK:'))
但是这些都不起作用。

在python中:

('<MY_TOKEN>')
这是TOK:'的base64表示形式

要传递自己的标题,请在字典中传递,如下所示:

r = requests.get('<MY_URI>', headers={'Authorization': 'TOK:<MY_TOKEN>'})
r=requests.get(“”,headers={'Authorization':'TOK:'})

我在找类似的东西,结果发现了。在你提到的第一个选项中

r=requests.get(“”,auth=(“”))
“auth”接受两个参数:username和password,因此实际语句应该是

r=requests.get(“”,auth=(“”,))
在我的例子中,没有密码,所以我将auth字段中的第二个参数留空,如下所示:


r=requests.get(“您可以尝试以下方法

r = requests.get(ENDPOINT, params=params, headers={'Authorization': 'Basic %s' %  API_KEY})

您还可以为整个会话设置标题:

TOKEN = 'abcd0123'
HEADERS = {'Authorization': 'token {}'.format(TOKEN)}

with requests.Session() as s:

    s.headers.update(HEADERS)
    resp = s.get('http://example.com/')
这对我很有用:

access_token = #yourAccessTokenHere#

result = requests.post(url,
      headers={'Content-Type':'application/json',
               'Authorization': 'Bearer {}'.format(access_token)})

请求本机仅支持带有用户传递参数的基本身份验证,而不支持带有令牌的基本身份验证

如果需要,可以添加以下类以使请求支持基于令牌的基本身份验证:

import requests
from base64 import b64encode

class BasicAuthToken(requests.auth.AuthBase):
    def __init__(self, token):
        self.token = token
    def __call__(self, r):
        authstr = 'Basic ' + b64encode(('token:' + self.token).encode('utf-8')).decode('utf-8')
        r.headers['Authorization'] = authstr
        return r
然后,要使用它,请运行以下请求:

r = requests.get(url, auth=BasicAuthToken(api_token))

另一种选择是制定一个自定义标题,就像这里的其他用户所建议的那样。

我在这里创建了linkedin,我同意: 因此,我的linkedin登录代码如下:

ref = 'https://api.linkedin.com/v2/me'
headers = {"content-type": "application/json; charset=UTF-8",'Authorization':'Bearer {}'.format(access_token)}
Linkedin_user_info = requests.get(ref1, headers=headers).json()
这对我很有用:

r = requests.get('http://127.0.0.1:8000/api/ray/musics/', headers={'Authorization': 'Token 22ec0cc4207ebead1f51dea06ff149342082b190'})

我的代码使用用户生成的令牌。

您有一个需要授权的请求,可能您有一个结果
401

假设您的请求如下:

REQ ='https://api.asite.com/something/else/else'
HEADER = {'Authorization': f'{TOKEN}'}
req.get(REQ, headers=HEADER)
req.get(COACH, headers=HEADER).json()
您有您的代币:

TOKEN = 'fliuzabuvdgfnsuczkncsq12454632'
按如下方式构建标题:

REQ ='https://api.asite.com/something/else/else'
HEADER = {'Authorization': f'{TOKEN}'}
req.get(REQ, headers=HEADER)
req.get(COACH, headers=HEADER).json()
然后像这样使用它:

REQ ='https://api.asite.com/something/else/else'
HEADER = {'Authorization': f'{TOKEN}'}
req.get(REQ, headers=HEADER)
req.get(COACH, headers=HEADER).json()
按如下方式显示结果:

REQ ='https://api.asite.com/something/else/else'
HEADER = {'Authorization': f'{TOKEN}'}
req.get(REQ, headers=HEADER)
req.get(COACH, headers=HEADER).json()

回溯(最后一次调用):文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/requests/api.py”中的第1行文件“/Library/Frameworks/Python.framework/Versions/2.7/site packages/requests/api.py”,第55行,在get-return-requests('get',',',,**kwargs)文件“/libraphs/Frameworks,第44行,请求返回会话.request(method=method,url=url,**kwargs)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/requests/sessions.py”,第323行,请求准备=self.prepare_请求(req)@我能告诉你吗?那不是整个堆栈跟踪,也没有表明你实际尝试了什么。对不起,堆栈溢出不允许我发布整个输出。我完全按照你的建议做了:r=requests.get('which url I have',headers={'Authorization':'TOK:which token I have'})无需道歉。成功了吗?你接受了我的答案,但这似乎给你带来了一个例外。如果你创建了一个对话,我可以比在这里进行对话更轻松地帮助你。西格玛,我实际上错过了导致错误的代码的一个小细节。实际代码是保密的,因此我无法提供依据。但我将发布其他问题这些问题非常简单,我相信你会知道。如果你尝试
r=requests.get(“”,auth=(“”))
,您将得到
TypeError:“str”对象不可调用。
。这让我有一段时间感到困惑,直到我遇到这个问题:/您的anserd帮助了我,但只是在阅读了您提供的链接后才开始使用。使用HTTPBasicAuth从requests.auth导入使它变得非常简单!