如何通过 OAuth 身份验证传递参数以便我的回调或控制器可以使用?
我正在对提供商 (LinkedIn) 使用 OAuth。
我希望能够传递参数,以便当有人注册时,我可以在创建新用户时添加一些附加值(我正在使用 Devise)。
但我该怎么做呢?
看起来链接会转到提供商,然后提供商会对我的应用程序进行回调。如何从该链接传递参数?
I am using OAuth to a provider (LinkedIn).
I want to be able to pass parameters so that when someone signs-up, I can add some additional values at the time the new User is created (I am using Devise).
But how do I do that?
It looks like the link goes to the provider, which then makes a callback to my application. How can I pass parameters from that link?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您将
GET
样式参数添加到身份验证 URL,它们将通过omniauth.params
下的 Railsrequest.env
对象在回调中可用。钥匙。例如,如果您通过以下方式进行身份验证:
在映射到 GET /auth/:provider/callback 的控制器方法中,您将得到:
答案有点晚了,但我希望它对某人有帮助。
If you add
GET
style params to the authentication url they will be available in the callback via the Railsrequest.env
object under theomniauth.params
key. For exampleIf you authenticate via:
In the controller method mapped to
GET /auth/:provider/callback
you will have:Answer was a bit late, but I hope it helps someone.
执行此操作的简单方法是在会话中设置参数,然后在回调中访问它们。
在重定向到提供程序的操作中:
在处理来自提供程序的回调的操作中:
使用
delete
确保您的会话对于后续请求而言保持较小。The easy way to do this is to set the parameters in the session, then access them in the callback.
In your action that redirects to the provider:
In the action that handles the callback from the provider:
Use
delete
to ensure your session remains small for subsequent requests.请注意,如果您使用 ng-token-auth,则可以将参数传递给 $auth。进行身份验证,这些将在创建用户模型时使用。
例如:
$auth.authenticate('github', {params: {favorite_color: 'green'})
Notice that if you're using ng-token-auth then you can pass parameters to $auth.authenticate, and these will be used when creating the User model.
For example:
$auth.authenticate('github', {params: {favorite_color: 'green'})