invalid_grant: Неверный запрос |Ошибка при создании access_token в чате Google Hangouts - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь создать чат-бота в чате Hangouts.

Я имею в виду эту документацию для реализации привязки аккаунта.

Его версия по умолчанию работает, но когда я пытаюсь сгенерировать access_token и обновить токен, используя Token Endpoint.Это дает

{
    "error": "invalid_grant",
    "error_description": "Bad Request"
}

Вот мой код функции обратного вызова.

def on_oauth2_callback():
"""Handles the OAuth callback."""

print("IN CALLBACK ", flask.request.args)
oauth2_callback_args = OAuth2CallbackCipher.decrypt(
    flask.request.args['state'])
user_name, redirect_url = (
    oauth2_callback_args['user_name'],
    oauth2_callback_args['redirect_url'])
oauth2_flow = flow.Flow.from_client_secrets_file(
    OAUTH2_CLIENT_SECRET_FILE,
    scopes=PEOPLE_API_SCOPES,
    redirect_uri=flask.url_for('auth.on_oauth2_callback', _external=True),
    state=flask.request.args['state'])
oauth2_flow.fetch_token(authorization_response=flask.request.url)
print("REDIRECT URL ", redirect_url)

auth_code = request.args.get('code')
data = {'code': auth_code,
        'client_id': "xxxxxxxxxxxxxxx.apps.googleusercontent.com",
        'client_secret': "xxxxxxxxxxxx",
        'redirect_uri': redirect_url,
        'grant_type': 'authorization_code'}
print("%^" * 10, json.dumps(data))
r = requests.post('https://www.googleapis.com/oauth2/v3/token', data=json.dumps(data))
print("%" * 10, r.text)

return flask.redirect(redirect_url)

Что я делаю не так?И если есть другой способ, будь добр, просвети меня.

1 Ответ

0 голосов
/ 19 декабря 2018

После того, как вы позвонили oauth2_flow.fetch_token(authorization_response=flask.request.url), вы просто обменяли код авторизации в этом ответе на токен доступа.

Так что вам не нужно вызывать конечную точку токена, вам просто нужно получить учетные данные:

credentials = oauth2_flow.credentials

И, наконец, получите токен и refresh_token от credentials.token и credentials.refresh_token.

Посмотрите эту документацию .

Я надеюсь, что этоясно!

...