Python-aanvraag met authenticatie (Access_token)

Ik probeer een API-query in Python te krijgen. De opdrachtregel

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

geeft wat JSON-uitgang. MyToken is een hexadecimale variabele die overal constant blijft. Ik zou deze oproep van Python willen maken, zodat ik verschillende ID’s kan doorlopen en de uitvoer kan analyseren. Ideeën? Voordat authenticatie nodig was, heb ik dat gedaan met Urllib2. Ik heb ook een kijkje genomen naar de module voor aanvragen, maar kon niet achterhalen hoe dat te doen.

Veel dank.


Antwoord 1, Autoriteit 100%

De aanvragen pakket heeft een zeer mooie API voor HTTP-verzoeken, waardoor een aangepaste koptekst werkt Dit (bron: officiële documenten ):

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

Als u geen externe afhankelijkheid wilt gebruiken, ziet hetzelfde als u Ulllib2 van de standaardbibliotheek er zo uitziet (Bron: de ontbrekende handleiding ):

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

Antwoord 2, Autoriteit 23%

Ik had hetzelfde probleem bij het proberen een token te gebruiken met GitHub.

De enige syntaxis die voor mij heeft gewerkt met Python 3 is:

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

Antwoord 3, Autoriteit 10%

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

Als het bovenstaande niet werkt, probeer dit dan:

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

Antwoord 4, Autoriteit 5%

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())

Uitgang:

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

Antwoord 5, Autoriteit 3%

Heb je de uncurlPackage (https://github.com/spulec. / Uncurl )? U kunt het installeren via PIP, pip install uncurl. Uw Curl-aanvraag retourneert:

>>> uncurl "curl --header \"Authorization:access_token myToken\" https://website.com/id"
requests.get("https://website.com/id",
    headers={
        "Authorization": "access_token myToken"
    },
    cookies={},
)

Antwoord 6

Ik voeg een beetje hint toe: het lijkt wat je passeert, omdat de sleutelwaarde van een koptekst afhankelijk is van je autorisatietype, in mijn geval die PRIVATE-TOKEN

was

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

Other episodes