使用 Twitter 的 Omniauth 在用户创建后不存储某些值

发布于 2024-12-09 10:16:10 字数 707 浏览 0 评论 0原文

我按照 Ruby on Rails 教程书创建了自己的身份验证和注册系统。我现在正尝试使用 Twitter 身份验证将其替换为 Omniauth。

我遵循了 Railscast 中的所有步骤并且它有效,但现在我试图在用户创建时保存更多用户信息字段,但它们没有保存。这是创建用户的代码:

  def self.create_with_omniauth(auth)
    create! do |user|
      user.provider = auth["provider"]
      user.uid = auth["uid"]
      user.name = auth["user_info"]["name"]
      user.email = auth["user_info"]["email"]
      user.time_zone = auth["user_info"]["time_zone"]
    end
  end

如果需要的话,这是我的 current_user 代码:

 def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

另外,在哪里可以找到可以从使用 Twitter 登录的用户那里获得的用户信息列表?我需要一些其他信息,但似乎找不到。

谢谢!

I followed the Ruby on Rails Tutorial book and created my own authentication and signup system. I now am trying to replace that with Omniauth using Twitter authentication.

I followed all the steps in the railscast and it works, but now I'm trying to save a couple more user info fields upon user creation and they aren't saving. Here's the code to create the user:

  def self.create_with_omniauth(auth)
    create! do |user|
      user.provider = auth["provider"]
      user.uid = auth["uid"]
      user.name = auth["user_info"]["name"]
      user.email = auth["user_info"]["email"]
      user.time_zone = auth["user_info"]["time_zone"]
    end
  end

and here's my code for current_user if needed:

 def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

Also, where can I find a list of user info I can get from a user signing in using twitter? I need a couple other pieces of info and can't seem to find it.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

鲜血染红嫁衣 2024-12-16 10:16:10

简单的答案是 Twitter 不允许您获取他们的电子邮件地址。

Simple answer is twitter doesn't allow you to grab their email address.

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