如何使用 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-permissions

b) 使用自定义范围的数据丰富配置文件对象

https://github.com/jaredhanson/passport-facebook#profile-fields

profile 对象将自动包含额外的请求字段,您无需调整请求对象本身。

【讨论】:

目的是用户指定了一些根本不属于 Facebook 个人资料系统的自定义数据,但它是该系统用户对象的一部分(并且是注册的要求) )。所以,我希望用户能够在注册时输入这些额外数据,即使是使用 Facebook。 在会话对象中结合 FB 配置文件和自定义值。

以上是关于如何使用 Oauth 请求提交和处理请求参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails OAuth 请求中设置参数?

如何从OAuth2请求中删除重定向参数?

您如何在 .net WebApi2 应用程序中的 OAuth2 令牌请求中使用额外参数

如何查看 Postman 在发出 OAuth 请求时使用的原始签名?

使用 oAuth2 验证 WPF 和 PHP 之间的请求?

OAuth授权请求中'state'参数的目的是啥