2
我也跟着在https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview中描述的步骤,有这样的用户模型的方法:的Rails 3 *设计的Facebook OmniAuth间歇性地失败,NoMethodError
def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
data = access_token.extra.raw_info
if user = self.find_by_email(data.email)
user
else # Create a user with a stub password.
self.create!(:email => data.email, :password => Devise.friendly_token[0,20])
end
end
我断断续续得到像
一个错误NoMethodError发生在omniauth_callbacks#Facebook的:
未定义的方法email' for "false":String app/models/user.rb:138:in
find_for_facebook_oauth”
,我还没有能够重现。这个问题的根源是什么?
可能出现'raw_info'返回'“false”'的情况。为什么?我不知道......我认为'request.env [“omniauth.auth”]是一个简单的散列,所以我不知道他们如何调用'access_token.extra.raw_info'。也许他们把它变成一个展开式的东西或类似的东西。 – Robin 2012-04-25 00:05:41
正好。与raw_info对应的值应该是包含电子邮件等值的散列值,但是这次我只是得到“false”。发生这种情况时我无法弄清楚这些情况。 – ertan 2012-04-25 02:36:28
也许当用户拒绝授予权限? – Robin 2012-04-25 12:59:44