Не удается получить токен апи
leins275 opened this issue · 1 comments
leins275 commented
пытаюсь получить токен как в примере
Вот мой код:
zen_url_base = "https://api.zenmoney.ru/oauth2/"
def get_request_code_url():
query_params = {
"response_type": "code",
"client_id": settings.ZEN_CLIENT_ID,
"redirect_uri": settings.ZEN_REDIRECT_URI,
}
query_string = urllib.parse.urlencode(query_params)
return f"{zen_url_base}authorize/?{query_string}"
def get_token_url():
return f"{zen_url_base}token/"
@oauth_router.get("/auth", response_class=RedirectResponse, status_code=302)
def authorize():
code_url = get_request_code_url()
return code_url
@oauth_router.get("/redirect/")
async def get_token(code):
token_url = get_token_url()
headers = {"content-type": "application/x-www-form-urlencoded"}
payload = {
"grant_type": "authorization_code",
"client_id": settings.ZEN_CLIENT_ID,
"client_secret": settings.ZEN_CLIENT_SECRET,
"code": code,
"redirect_uri": settings.ZEN_REDIRECT_URI
}
res = requests.post(token_url, data=payload, headers=headers)
print(f"{res.status_code}: {res.reason}")
print(res.text)
return res.json()
- Вначале перехожу на myapp.example.com/auth - происходит перенаправление на /oauth2/authorize
- Вхожу через google, меня перенаправляет на myapp.example.com/redirect с
authorization_code
- Далее делаю запрос на получение токена, согласно инструкции, приходит ответ 400 Bad Request
{
"error": "invalid_grant"
}
Создал отдельный аккаунт для теста, в zenmoney, одинаковое поведение и при попытке получить токен через google и через zenmoney аккаунт.
Подскажите, в чем может быть проблема?
leins275 commented
Проблема была в том, что в обоих случаях должен быть одинаковый redirect_uri + в роуте /redirect не должно быть слеша в конце. Если кому-то поможет эта информация - буду рад