belkin_aa
@belkin_aa
Обо мне: https://clck.ru/ge9cs

Как реализовать oAuth на Flask через Яндекс?

Пытаюсь разобрать с аутентификацией через яндекс по документации:
1) Создал приложение в кабинете
2) Указал в настройках в поле REDIRECT URL = HTTPS_SITE/verification
Я так понимаю, что туда будут приходить ответы
3) Скачал кнопку "Войти через Яндекс" и на нее поставил ссылку "/yandex_sign_in":
4) В обработчике "/yandex_sign_in"
@app.route('/yandex_sign_in', methods=['GET'])
    def yandex_sign_in(lang=''):
        ...
        url = f'https://oauth.yandex.ru/authorize?response_type=token&client_id={client_id}&' \
              f'redirect_uri={redirect_uri}&login_hint={login_hint}&scope={scope}&'\
              f'force_confirm=yes&display=popup'
        return redirect(url, code=302)

5) В обработчике "/verification" прописал:
@app.route('/verification', methods=['GET'])
    def verification(lang=''):
        try:
            access_token = request.args.get('access_token')
            expires_in = request.args.get('expires_in')
            token_type = request.args.get('token_type')
            state = request.args.get('state')
            scope = request.args.get('scope')
            return jsonify({'access_token': access_token,
                            'expires_in': expires_in,
                            'token_type': token_type,
                            'state': state,
                            'scope': scope
                            })
        except:
            error = request.args.get('error')
            error_description = request.args.get('error_description')
            return jsonify({'error': error,
                            'error_description': error_description,
                            })

--
В итоге, запускаю приложение --> жму кнопку "Войти через Яндекс" ---> и в итоге ошибка 404, что страница не найдена..
Что я не так сделал? Я же правильно понимаю, что должна была открыться форма заполнения логина и пароля, а потом яндекс должен дать ответ - есть такой или нет и если есть, то токен вернет. Но вопрос, как я "login_hint" ему должен передать, или получается что пользователь должен сначала форму заполнить, а потом нажимать вход через яндекс?
-
Просто в документации явно последовательность нарушена, либо я не туда смотрю. Может кто даст ссылку на пошаговую документацию? Или так вкратце подскажет что не так делаю?
---
UPD:
А если в браузере самому отправить ссылку с заполненными параметрами : "https://oauth.yandex.ru/authorize?response_type=to......"
то браузер редиректит на указанную страницу и в ответе:
{"access_token":null,"expires_in":null,"scope":null,"state":null,"token_type":null}
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы