use*_*406 55 python authentication curl access-token
我正在尝试将API查询到python中.命令行
curl --header "Authorization:access_token myToken" https://website.com/id
Run Code Online (Sandbox Code Playgroud)
给出一些json输出.myToken是一个十六进制变量,始终保持不变.我想从python进行这个调用,这样我就可以遍历不同的id并分析输出.有任何想法吗?在需要身份验证之前,我已经使用urllib2完成了这项工作.我还看了一下请求模块,但无法弄清楚如何做到这一点.
非常感谢.
小智 97
该请求包有一个用于HTTP请求的一个非常好的API,加入了自定义标题是这样的(来源:官方文档):
>>> import requests
>>> response = requests.get(
... 'https://website.com/id', headers={'Authorization': 'access_token myToken'})
Run Code Online (Sandbox Code Playgroud)
如果你不想使用外部依赖,那么使用标准库的urllib2就是这样(源:缺少的手册):
>>> import urllib2
>>> response = urllib2.urlopen(
... urllib2.Request('https://website.com/id', headers={'Authorization': 'access_token myToken'})
Run Code Online (Sandbox Code Playgroud)
blo*_*tfc 19
尝试与Github一起使用令牌时遇到了同样的问题.
使用Python 3的唯一语法是:
import requests
myToken = '<token>'
myUrl = '<website>'
head = {'Authorization': 'token {}'.format(myToken)}
response = requests.get(myUrl, headers=head)
Run Code Online (Sandbox Code Playgroud)
Sow*_*agu 14
>>> import requests
>>> response = requests.get('https://website.com/id', headers={'Authorization': 'access_token myToken'})
Run Code Online (Sandbox Code Playgroud)
如果上述方法不起作用,请尝试以下操作:
>>> import requests
>>> response = requests.get('https://api.buildkite.com/v2/organizations/orgName/pipelines/pipelineName/builds/1230', headers={ 'Authorization': 'Bearer <your_token>' })
>>> print response.json()
Run Code Online (Sandbox Code Playgroud)
djv*_*jvg 12
已经有很多好的答案,但我还没有看到这个选项:
如果您使用requests,您还可以指定自定义身份验证类,类似于HTTPBasicAuth。例如:
from requests.auth import AuthBase
class TokenAuth(AuthBase):
def __init__(self, token, auth_scheme='Bearer'):
self.token = token
self.auth_scheme = auth_scheme
def __call__(self, request):
request.headers['Authorization'] = f'{self.auth_scheme} {self.token}'
return request
Run Code Online (Sandbox Code Playgroud)
可以按如下方式使用(使用示例中的自定义auth_scheme ):
response = requests.get(
url='https://example.com',
auth=TokenAuth(token='abcde', auth_scheme='access_token'),
)
Run Code Online (Sandbox Code Playgroud)
这可能看起来是一种更复杂的设置Request.headers属性的方法,但如果您想支持多种类型的身份验证,它可能会很有优势。请注意,这允许我们使用auth参数而不是headers参数。
您是否尝试过该uncurl软件包(https://github.com/spulec/uncurl)?您可以通过 pip 安装它pip install uncurl。您的卷曲请求返回:
>>> uncurl "curl --header \"Authorization:access_token myToken\" https://website.com/id"
requests.get("https://website.com/id",
headers={
"Authorization": "access_token myToken"
},
cookies={},
)
Run Code Online (Sandbox Code Playgroud)
import requests
BASE_URL = 'http://localhost:8080/v3/getPlan'
token = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImR"
headers = {'Authorization': "Bearer {}".format(token)}
auth_response = requests.get(BASE_URL, headers=headers)
print(auth_response.json())
Run Code Online (Sandbox Code Playgroud)
输出 :
{
"plans": [
{
"field": false,
"description": "plan 12",
"enabled": true
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129349 次 |
| 最近记录: |