QiitaAPIを使いたいです。
認証画面を描画することはできましたが、メールアドレスとパスワードを入力し、ログインボタンを押してもcodeとstateのついたURLが返ってきません。
リダイレクトされていないようです。何が問題のでしょうか?
Flaskの開発中のURLである「http://127.0.0.1:5000/」をWebサイトのURLとし、
「http:127.0.0.1:5000/callback/」をリダイレクト先URLにしています。
http://127.0.0.1:5000/login/に認証画面をそのまま出力しています。
ログインボタンを押すと、postが登録されていないといわれたので、
一応、別のhtmlを描画するようにしてあります。
一体、どのようにすればcodeとstateの付与されたリダイレクトがされますか?
python3
1@app.route('/login', methods=['GET', 'POST']) 2def login(): 3 if request.method == 'GET': 4 r = get_user_id() # 認証画面を開く 5 if r.status_code == 200: 6 r = r.text 7 return render_template('login.html', qiita=r) 8 elif request.method == 'POST': 9 return render_template('result.html')
python3
1import QiitaInfo 2from requests import get, post 3 4def get_user_id(): 5 client_id = QiitaInfo.ID 6 url = 'https://qiita.com/api/v2/oauth/authorize' 7 params = { 8 'client_id': client_id, 9 'scope': 'read_qiita', 10 'state': 'b17785d811bb1913ef54b0a7657de780defaa2d' 11 } 12 results = get(url, params=params) 13 return results
python3
1@app.route('/callback', methods=['GET', 'POST']) 2def main(): 3 return render_template('result.html')
追記
Qiitaをログアウトした状態かつTwitterによる認証のみうまく動作しました。
Qittaをログインしている状態、メールアドレスとパスワードによる認証はうまくいっていません。
さらに追記
callbackのルーティングを記載しました。
さらに追加
/loginを別のものに変更すると、メールアドレスとパスワードによるログイン、認証ができました。
しかし、依然として、既にQiitaにログログインしている状態だと、認証ページが開かれません。もちろん、callbackへのリダイレクトもありません。
Qiitaにログインしていても、認証ページを開き、callbackへのリダイレクトをするにはどのような変更が必要なのでしょうか?
回答するにあたって必要な情報がありましたら、ご連絡ください。
あなたの回答
tips
プレビュー