【发布时间】:2012-04-28 08:09:29
【问题描述】:
我有一个应用程序,用户可以在其中链接他们的 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 插入了访问令牌。所以我的问题是:
鉴于我有一个 OAuthException,我如何使用 Omniauth 更新特定用户 (UID) 的访问令牌?
【问题讨论】:
-
由于这不是您问题的答案,我将发表评论...但是您应该能够在没有活动令牌的情况下使用:
profile_pic = Koala::Facebook::GraphAPI.new.get_picture(fb_uid, {:type => "large"})抓取图片,对吧? -
如果您想获得延长的60天令牌,this may help
标签: ruby-on-rails facebook omniauth access-token koala