如何通过 OAuth 身份验证传递参数以便我的回调或控制器可以使用?

发布于 2024-11-03 07:11:00 字数 162 浏览 0 评论 0原文

我正在对提供商 (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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清泪尽 2024-11-10 07:11:00

如果您将 GET 样式参数添加到身份验证 URL,它们将通过 omniauth.params 下的 Rails request.env 对象在回调中可用。钥匙。例如,

如果您通过以下方式进行身份验证:

link_to "Log In", "/auth/linkedin?foo=bar"

在映射到 GET /auth/:provider/callback 的控制器方法中,您将得到:

request.env['omniauth.params'] == { "foo" => "bar" }

答案有点晚了,但我希望它对某人有帮助。

If you add GET style params to the authentication url they will be available in the callback via the Rails request.env object under the omniauth.params key. For example

If you authenticate via:

link_to "Log In", "/auth/linkedin?foo=bar"

In the controller method mapped to GET /auth/:provider/callback you will have:

request.env['omniauth.params'] == { "foo" => "bar" }

Answer was a bit late, but I hope it helps someone.

全部不再 2024-11-10 07:11:00

执行此操作的简单方法是在会话中设置参数,然后在回调中访问它们。

在重定向到提供程序的操作中:

session[:additional] = additional_data_hash

在处理来自提供程序的回调的操作中:

data = session.delete(:additional)

使用 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:

session[:additional] = additional_data_hash

In the action that handles the callback from the provider:

data = session.delete(:additional)

Use delete to ensure your session remains small for subsequent requests.

放赐 2024-11-10 07:11:00

请注意,如果您使用 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'})

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文