122

リクエスト URI とトークンがあります。私が使用する場合:

curl -s "<MY_URI>" -H "Authorization: TOK:<MY_TOKEN>"

など、200 を取得し、対応する JSON データを表示します。そのため、リクエストをインストールし、このリソースにアクセスしようとすると、おそらくそのトークンを渡すための正しい構文がわからないため、403 が返されます。誰でも私がそれを理解するのを手伝ってくれますか? これは私が持っているものです:

import sys,socket
import requests

r = requests.get('<MY_URI>','<MY_TOKEN>')
r. status_code

私はすでに試しました:

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

しかし、これらのどれも機能しません。

4

9 に答える 9

134

パイソンでは:

('<MY_TOKEN>')

と同等です

'<MY_TOKEN>'

そしてリクエストは解釈します

('TOK', '<MY_TOKEN>')

リクエストで基本認証を使用し、次のような認証ヘッダーを作成する必要がある場合:

'VE9LOjxNWV9UT0tFTj4K'

のbase64表現はどれですか'TOK:<MY_TOKEN>'

独自のヘッダーを渡すには、次のように辞書を渡します。

r = requests.get('<MY_URI>', headers={'Authorization': 'TOK:<MY_TOKEN>'})
于 2013-09-29T00:01:02.097 に答える
4

Requests natively supports basic auth only with user-pass params, not with tokens.

You could, if you wanted, add the following class to have requests support token based basic authentication:

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

Then, to use it run the following request :

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

An alternative would be to formulate a custom header instead, just as was suggested by other users here.

于 2019-08-14T15:12:39.347 に答える
0

承認が必要なリクエストがあり、おそらく結果があり401ます。

リクエストが次のようになっているとします。

REQ ='https://api.asite.com/something/else/else'

あなたはあなたのトークンを持っています:

TOKEN = 'fliuzabuvdgfnsuczkncsq12454632'

次のようにヘッダーを作成します。

HEADER = {'Authorization': f'{TOKEN}'}

次のように使用します。

req.get(REQ, headers=HEADER)

次のように結果を表示します。

req.get(COACH, headers=HEADER).json()
于 2021-04-07T10:30:13.910 に答える