我正在使用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请求和访问
但这不起作用,因为你不能用facebook api注册一个param加载的请求(或者至少看起来就是这样).
我已经在StackOverflow的其他地方读过你可以加载请求状态,但这对我来说似乎很奇怪.这是链接:Facebook OAuth: custom callback_uri parameters
所以,关于如何将额外数据加载到Oauth请求的任何指导,以便当我保存用户配置文件时我可以访问并保存它,这将是很好的.
多谢你们.
解决方法
对我来说,你想要实现的目标并不是很清楚.什么是“额外”字段,为什么不直接从用户的配置文件中派生字段?我见过的大约98%的FB登录实现只使用“使用Facebook登录”按钮并在OAuth过程中获取用户的数据,而不是由用户手动输入.
以passport-facebook为例,你有可能
a)配置自定义范围
> https://github.com/jaredhanson/passport-facebook#extended-permissions
> https://github.com/jaredhanson/passport-facebook#profile-fields