使用 OmniAuth,我成功地从 Facebook 获取哈希数据:存储在“auth”中
# extra=#] last_name="Jordan" link="http://www.facebook.com/michael" locale="en_US" middle_name="Ball" name="Michael Jordan" quotes="\"lalala\"\n\n\"lala\"" timezone=9 updated_time="2011-09-01T20:25:58+0000" username="mjordan82" verified=true>> info=# verified=true> provider="facebook" uid="123456879">
在用户模型中,我执行以下操作:
def self.create_with_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["name"]
end
end
当我检查数据库时,我只有提供者和 uid。User.name 行为空。通过测试,我发现除了提供者和 uid 之外,我无法存储其他数据。例如,user.name = auth["provider"] 或 user.name = auth["uid"] 存储没有问题,但是当我尝试类似 user.name = auth["timezone"] 或 user.name = auth["last_name"],变量中没有存储任何内容。有人知道怎么修这个东西吗?我也试过 user.name = auth["user_info"]["name"],但它返回了一个错误。
我不确定为什么 user.name = auth["name"] 不存储任何内容。换句话说,为什么在这种情况下 auth["name"] 不是 "Michael Jordan"?