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