我正在使用MeanJS堆栈来开发Web应用程序。我遇到的问题是,我的常规注册过程有一些Oauth用户配置文件不常见的独特参数。因此,当我让用户去注册Facebook时,我将它们移动到一个新的注册表单,让他们填写额外的参数,然后点击“注册Facebook。”
这些路线与此处的常见MeanJS路线相同: https://github.com/meanjs/mean/blob/master/app/routes/users.server.routes.js
特别是这些行:
app.route('/auth/facebook').get(passport.authenticate('facebook', {
scope: ['email']
}));
app.route('/auth/facebook/callback').get(users.oauthCallback('facebook'));
我想要做的是将额外的参数附加到请求对象,以便当auth进程到达exports.saveOAuthUserProfile
内部时:https://github.com/meanjs/mean/blob/master/app/controllers/users/users.authentication.server.controller.js
此功能将能够访问这些参数并将其保存为用户模型的一部分。
我已尝试将参数附加到Get请求并访问
req.params.paramId
但是这不起作用,因为你不能用facebook api注册一个param加载的请求(或者至少看起来是这样)。
我已经在StackOverflow的其他地方读过你可以加载请求状态,但这对我来说似乎很奇怪。这是以下链接:Facebook OAuth: custom callback_uri parameters
所以,关于如何将额外数据加载到Oauth请求中的任何指导,以便当我保存用户配置文件时我可以访问并保存它,这将是很好的。
谢谢你们。
答案 0 :(得分:2)
我不清楚你想要达到什么目标。什么是“额外”字段,为什么不直接从用户的配置文件中派生字段?我见过的大约98%的FB登录实现只使用“使用Facebook登录”按钮,并在OAuth过程中获取用户的数据,而不是由用户手动输入。
以passport-facebook为例,您可能
a)配置自定义范围
b)使用自定义范围的数据
丰富配置文件对象 profile
对象将自动包含其他请求的字段,您无需调整请求对象本身。