如何使用 Oauth 请求提交和处理请求参数?
Posted
技术标签:
【中文标题】如何使用 Oauth 请求提交和处理请求参数?【英文标题】:How do I submit and process request params with an Oauth request? 【发布时间】:2015-08-13 13:47:51 【问题描述】:我正在使用 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'));
我想做的是将额外的参数附加到请求对象上,这样当身份验证过程到达exports.saveOAuthUserProfile
内部时:https://github.com/meanjs/mean/blob/master/app/controllers/users/users.authentication.server.controller.js
此函数将能够访问这些参数并将它们保存为用户模型的一部分。
我已尝试将参数附加到 Get 请求并访问
req.params.paramId
但这不起作用,因为您无法使用 facebook api 注册参数加载请求(或者至少看起来是这样)。
我在 *** 上的其他地方读到过,您可以加载请求状态,但这对我来说似乎很奇怪。这是链接:Facebook OAuth: custom callback_uri parameters
所以,任何关于如何将额外数据加载到 Oauth 请求中的指导,以便在我保存用户配置文件时可以访问并保存它,这将是非常棒的。
谢谢各位。
【问题讨论】:
【参考方案1】:我不太清楚你想要实现什么。什么是“额外”字段,为什么不直接从用户的个人资料中派生这些字段?我见过的大约 98% 的 FB 登录实现只是使用“使用 Facebook 登录”按钮并在 OAuth 过程本身期间获取用户的数据,而不是由用户手动输入。
以passport-facebook 为例,您有可能
a) 配置自定义范围
https://github.com/jaredhanson/passport-facebook#extended-permissionsb) 使用自定义范围的数据丰富配置文件对象
https://github.com/jaredhanson/passport-facebook#profile-fieldsprofile
对象将自动包含额外的请求字段,您无需调整请求对象本身。
【讨论】:
目的是用户指定了一些根本不属于 Facebook 个人资料系统的自定义数据,但它是该系统用户对象的一部分(并且是注册的要求) )。所以,我希望用户能够在注册时输入这些额外数据,即使是使用 Facebook。 在会话对象中结合 FB 配置文件和自定义值。以上是关于如何使用 Oauth 请求提交和处理请求参数?的主要内容,如果未能解决你的问题,请参考以下文章
您如何在 .net WebApi2 应用程序中的 OAuth2 令牌请求中使用额外参数