Twitter プロバイダーと連携して、 BellモジュールでHapi フレームワーク (nodejs) を使用しています。
github ページに示されている例を使用して、動作するコードを取得するのは非常に簡単でした。/loginルートにアクセスすると、Twitter にリダイレクトされます。そこでアプリを承認すると、/login?oauth_token=xxxxxxx&oauth_verifier=xxxxxxxにリダイレクトされて、request.auth.credentials でユーザー プロファイルにアクセスできるようになります。 .
アプリを拒否しようとしたときに問題が発生しました。Twitterの「サインイン」ボタンをクリックする代わりに、「キャンセル」ボタンをクリックしてから、「サイト名に戻る」ボタンをクリックしました。この最後のボタンをクリックすると、/login?denied=xxxxxxにリダイレクトされます。次に、アプリを承認するために (再び) Twitter にリダイレクトされます。
同じページhttps://github.com/hapijs/bell#handling-errorsの別の例を使用してこのシナリオを処理しようとしましたが、うまくいきません。
server.route({
method: ['GET', 'POST'],
path: '/login',
config: {
auth: {
strategy: 'twitter',
mode: 'try'
},
handler: function (request, reply) {
if (!request.auth.isAuthenticated) {
return reply('Authentication failed due to: ' + request.auth.error.message);
}
return reply.redirect('/home');
}
}
});
request.auth をチェックする前に /login ルートを解釈して Twitter にリダイレクトしているようです。私はまだ Bell モジュールをよく理解していませんが、Twitter 戦略がrequest.params でoauth_tokenとoauth_verifierを期待している可能性がありますが、拒否されたパラメーターは戦略によって解釈されないため、リダイレクトが発生します。
誰かがこのシナリオを処理できましたか?