Node.js + Express + Everyauth ( https://github.com/abelmartin/Express-And-Everyauth/blob/master/app.js ) を使用して、アプリケーションから Facebook や Twitter などにログインしています。
私が理解しようとしている問題は、Everyauth が「構成して忘れる」ように見えることです。単一の everyauth オブジェクトをセットアップし、それを高速のミドルウェアとして機能するように構成してから、それを忘れます。たとえば、モバイル Facebook ログインを作成する場合は、次のようにします。
var app = express.createServer();
everyauth.facebook
.appId('AAAA')
.appSecret('BBBB')
.entryPath('/login/facebook')
.callbackPath('/callback/facebook')
.mobile(true); // mobile!
app.use(everyauth.middleware());
everyauth.helpExpress(app);
app.listen(8000);
ここに問題があります。モバイル クライアントと非モバイル クライアントの両方がサーバーに接続しますが、接続が確立されるまでどちらが接続しているかわかりません。さらに悪いことに、複数の Facebook アプリ ID をサポートする必要があります (また、クライアントが接続して入力を部分的に解析するまで、どれを使用する必要があるかわかりません)。everyauth は一度構成されたシングルトンであるため、行われた要求に基づいて構成にこれらの変更を加える方法がわかりません。
everyauth オブジェクトを設定するために、everyauth ミドルウェアの前に動作するある種のミドルウェアを作成する必要があるようです。これについてどうすればいいのかわかりません...
提案?
ひどいように思えますが、これが私がこれまでに持っていた最良のアイデアです。それぞれに異なるentryPathを使用して、可能なすべての構成に対してeveryauthオブジェクトを作成します