5

パスポートにはTwitter認証があります。ログインに関してはすべて問題ありません。私はこのコードを持っています

app.get('/auth/twitter', function (req, res) {
    if (req.user) {
        return res.redirect('/');
    }
    return passport.authenticate('twitter')(req, res);
});

そのため、ユーザーが既に Twitter で私のサイトにログインしている場合は、リダイレクトされます (最終的にはおそらくメッセージが表示されます)。ユーザーがサイトからログアウトし、[twitter でログイン] をもう一度クリックすると、Twitter 承認アプリのページが再び表示されます。それはすべきではありません。他のウェブサイトを見ると、アプリを再度承認するように求められることはありません。Twitter プロフィールの承認済みアプリ セクションを見ると、開発中のアプリケーションが表示されます。

既に許可を与えているのに、アプリケーションが許可を求め続けるのはなぜですか? これを変更するにはどうすればよいですか (token と token_secret を db に保存しています)。助けてくれてありがとう。

4

1 に答える 1

7

最近、開発システムで同じ問題が発生しましたが、本番環境では発生しませんでした。

私の問題は、Twitter のアプリケーション設定にまでさかのぼります。Twitter の Devサイトにアクセスして、自分の DEV システムと PROD システムで行った選択を注意深く比較し始めたとき、[My Applications] の [Settings] タブで [Allow this application to used to sign in with] のチェックボックスが異なることに気付きました。Twitter" チェックボックスは、DEV では選択されていませんでした、PROD システムでは選択されていました。

アプリの [設定] タブのチェック ボックスの下にある小さな文字には、次のように書かれています。

有効にすると、アプリケーションを使用して「Twitter でサインイン」できます。無効にすると、アプリケーションは /oauth/authenticate を使用できなくなり、アプリケーションへのリクエストはユーザーを /oauth/authorize にリダイレクトします。

承認と認証の違いは用語では明確ではありませんが、承認では毎回確認が必要ですが、認証ではユーザーの選択が「記憶」されます。

この 1 つの変更を行った後、私の DEV システムは、Twitter 経由でのログインをテストするたびに、認証関連の確認を求めなくなりました...

于 2013-05-19T22:51:29.277 に答える