我有一个应用程序,用户可以在其中链接他们的 Facebook 帐户。他们可以使用电子邮件登录,但可以链接他们的 Facebook 帐户。
在我显示链接的社交网络(Facebook 和其他)的视图中,我有这样的东西:
<%= image_tag @facebook.get_facebook_picture %>
这将调用这样的实例方法:
def get_facebook_picture
unless self.token.nil?
facebook_graph = Koala::Facebook::GraphAPI.new(self.token)
fb_picture = facebook_graph.get_picture("me", { :type => "small" })
end
end
除非我存储在我的数据库中的 Facebook 令牌已过期,否则这将运行良好。所以我在提到的控制器中添加了这个异常处理程序:
def facebook_exception_handler exception
if exception.fb_error_type.eql? 'OAuthException'
# Let's get a new auth token... How?
else
logger.debug "Damn it. We don't know what error is coming from FB"
raise exception
end
end
我正确捕获了异常,但我看不到如何更新我在数据库中拥有的访问令牌。请注意,我已经使用 OmniAuth 插入了访问令牌。所以我的问题是:
鉴于我有OmniauthOAuthException
,如何更新特定用户 (UID) 的访问令牌?