Closed tadanet3 closed 2 years ago
GithutのSakepedia Nuxtを一旦Revokeしたり OSとブラウザを色々変えて(Ubuntu, Windows, Android, Firefox, Edge, Chrome)試してみましたが、解決しませんでした。
ここ↓は、b-buttonのイベントにmethodsを割り当てるべきでは...?
ありがとうございます!
@click="githublogin" だと、CORSエラーになります!
envファイルが読み込めてない可能性がありそうなので、そこを確認中です。
@click="githublogin" だと、CORSエラーになります!
なるほど。とするとプロキシ? StackOverflowで、似たような質問があがっています。 https://stackoverflow.com/questions/42150075/cors-issue-on-github-oauth
githubloginのmethodsって、使ってないんですよね?ただ /api/auth/login
に遷移しているだけだと、promise的なところでうまくいかないような気がします。
あ、じゃなくて、むしろcallbackがうまくいっていないのか。
/api/auth/login ↓ api/route/auth.js内でpassport.authenticate('github')なのでgithubのログインが走る ↓ /page/callback.vue ここでplease wait ↓ /api/auth/callback ここで401
うまくいくと /api/auth/callback でuser情報もらって ↓ $storeにuser情報入れて /auth/account に遷移してます。
/api/auth/callback ここで401
ここ↑で「Unauthorized」になるので、やっぱり何かしらのpromise的なやりとりがうまくいっていないんでしょうね。
GitHub側のOAuth Appsの設定では以下になっています。 https://sakepedia.code4sake.org/callback
素朴な疑問。
ここでgetする先は '/callback'
では...?
https://github.com/Code-for-SAKE/Sakepedia-Nuxt/blob/b456fa77ec031a40afbce54e550eed96605c0ed9/api/routes/auth.js#L59
router.get
は、設定で、getしているわけではないはず。
/api/auth/callback
をここで処理しますよ。
の意味だったと思います。
passport.authenticate('github') の部分がpassportで認証させようとしているところです。
callbackの方はもしかして要らない?
だいたい以下と同じことをしているはず。 https://qiita.com/reireias/items/2bc1b33dfb0e63f31517
StrategyにcallbackURLが設定されてないのが原因かも!
お? router.get
の第一引数にアクセスして、第二引数を処理するのかと思ってました。
router.get(
'/auth/login',
passport.authenticate('github', { scope: ['user:email'] })
);
router.get('/auth/callback', passport.authenticate('github'), (req, res) => {
res.json({ user: req.user });
});
router.get('/auth/logout', (req, res) => {
req.logout();
res.json({});
});
User作る時に、unique設定されているnameがないのが原因でした。 結構前からこの状態なので、なぜ今まで動いていたのか。。。
本番環境は手修正済み。 整理してからPR出す予定。
Githubシングルサインオンできる事を確認しました。
一部の環境でGithubシングルサインオンに失敗する。 callback. Please Wait と表示されて、その状態から先に進まない。
GithubにはSakepedia Nuxtが追加されている。
デベロッパーツールで確認してみると、callback?code=***時に401エラーが発生している。 「サーバーからの応答に時間がかかっています。(786 ms)推奨される限界値は500msです。」 と出てるのが関係しているかも。