我成功地使用 Node.js + Express + Everyauth ( https://github.com/abelmartin/Express-And-Everyauth/blob/master/app.js ) 从我的应用程序登录到 Facebook、Twitter 等。
我试图解决的问题是 Everyauth 似乎是“配置并忘记”。我设置了一个everyauth 对象并将其配置为express 的中间件,然后就忘了它。例如,如果我想创建一个移动 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(同样,在客户端连接并部分解析输入之前,我不知道要使用哪个应用程序 ID)。因为everyauth 是一个配置一次的单例,所以我看不到如何根据发出的请求对配置进行这些更改。
看起来我需要创建某种中间件,该中间件在everyauth 中间件之前起作用以配置everyauth 对象,以便everyauth 随后使用正确的appId/appSecret/mobile 参数。我不知道该怎么做...
建议?
这是迄今为止我最好的想法,虽然它看起来很糟糕:为每个可能的配置创建一个everyauth对象,为每个配置使用不同的entryPath...