OAuth 2 Authlib.Как получить доступ к ресурсу? - PullRequest
0 голосов
/ 17 октября 2018

Я настроил этот пример сервера OAuth2.Имеет авторизацию и один ресурс (/api/me).Я делаю клиентское приложение также на Python.Я разобрался, как получить токен.Но когда я пытаюсь получить доступ к /api/me, я получаю ответ {"message":"401 Unauthorized: None"}.Я могу сказать, что я поставил свой токен в URL как параметр, а также я поместил его в FORM.Он поместил его под ключ access_token.Что я делаю неправильно?Очевидно, это должно как-то работать?

Вот код моего клиентского приложения:

    def token_get():
    token = None
    print("========================================")
    print("Sending POST request to get token")
    # FORM data
    payload = {
        "client_id":"ySFTzBKLo0XTaK2tQL9ls4Fc",
        "client_secret":"vq8vMZplY4J00FrxKx4ynV2mhmL2zzjMzP1U2bXZPhQRcmJl",
        "grant_type":"password", 
        "scope":"profile",
        "username":"ignas",
        "password":"valid"
    }
    auth=(
        "ySFTzBKLo0XTaK2tQL9ls4Fc",
        "vq8vMZplY4J00FrxKx4ynV2mhmL2zzjMzP1U2bXZPhQRcmJl"
    )
    r = requests.post(_url(f"/oauth/token"), data=payload, auth=auth)
    print(f"RESPONSE {r.status_code}")
    print(f"r.url={r.url}")
    print(f"r.text={r.text}")
    if r.status_code == 200:
        json = r.json()
        print(f"JSON=\"{json}\"")
        token = json["access_token"]
        print(f"TOKEN=\"{token}\"")
    print("========================================")

    return token

def api_me_get(token):
    print("========================================")
    print("Sending GET request to get protected data of me")
    # FORM data
    payload = {
        "access_token":f"{token}"
    }
    print(f"PAYLOAD=\"{payload}\"")
    r = requests.get(_url(f"/api/me"), data=payload, params=payload)
    print(f"RESPONSE {r.status_code}")
    print(f"r.url={r.url}")
    print(f"r.text={r.text}")
    if r.status_code == 200:
        json = r.json()
        print(f"JSON=\"{json}\"")
    print("========================================")

def test_token():
    token = token_get()
    api_me_get(token)

def main():
    test_token()

main()
...