带身份验证的python请求(access_token)

时间:2012-12-11 17:22:03

标签: python authentication curl access-token

我正在尝试将API查询到python中。命令行

curl --header "Authorization:access_token myToken" https://website.com/id

给出了一些json输出。 myToken是一个十六进制变量,始终保持不变。我想从python进行这个调用,这样我就可以遍历不同的id并分析输出。有任何想法吗?在需要身份验证之前,我已经使用urllib2完成了这项工作。我还看了一下请求模块,但无法弄清楚如何做到这一点。

非常感谢。

6 个答案:

答案 0 :(得分:78)

requests包有一个非常好的HTTP请求API,添加自定义标头就像这样工作(source: official docs):

>>> import requests
>>> response = requests.get(
... 'https://website.com/id', headers={'Authorization': 'access_token myToken'})

如果您不想使用外部依赖项,那么使用标准库的urllib2就是这样(source: the missing manual):

>>> import urllib2
>>> response = urllib2.urlopen(
... urllib2.Request('https://website.com/id', headers={'Authorization': 'access_token myToken'})

答案 1 :(得分:15)

尝试与Github一起使用令牌时遇到了同样的问题。

使用Python 3的唯一语法是:

import requests

myToken = '<token>'
myUrl = '<website>'
head = {'Authorization': 'token {}'.format(myToken)}
response = requests.get(myUrl, headers=head)

答案 2 :(得分:8)

>>> import requests
>>> response = requests.get('https://website.com/id', headers={'Authorization': 'access_token myToken'})

如果上述方法无效,请尝试以下操作:

>>> import requests
>>> response = requests.get('https://api.buildkite.com/v2/organizations/orgName/pipelines/pipelineName/builds/1230', headers={ 'Authorization': 'Bearer <your_token>' })
>>> print response.json()

答案 3 :(得分:3)

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())
<块引用>

输出:

{
"plans": [
    {
        "field": false,
        "description": "plan 12",
        "enabled": true
    }
  ]
}

答案 4 :(得分:0)

我将添加一个提示:似乎您传递的内容是标题的键值取决于您的授权类型,在我的情况下为PRIVATE-TOKEN

header = {'PRIVATE-TOKEN': 'my_token'}
response = requests.get(myUrl, headers=header)

答案 5 :(得分:0)

您是否尝试过uncurl软件包(https://github.com/spulec/uncurl)?您可以通过pip pip install uncurl安装它。您的curl请求返回:

>>> uncurl "curl --header \"Authorization:access_token myToken\" https://website.com/id"

requests.get("https://website.com/id",
    headers={
        "Authorization": "access_token myToken"
    },
    cookies={},
)