我在Ruby on Rails应用程序上使用Koala
gem
我在用于通过Koala数据的模型上有以下代码:
@graph = Koala::Facebook::GraphAPI.new(token_secret)
friends = @graph.get_connections("me", "friends")
其中
token_secret
来自我的users
表的字段,保存在登录名中。它工作正常,但几分钟后我得到:
Koala::Facebook::APIError (OAuthException: Error validating access token: Session has expired at unix time 1327438800. The current unix time is 1327442037.):
我在前面找到了使用
Facebook JS SDK
中的方法续签此令牌的方法,但是在控制器上调用了我获取朋友列表的方法。如何使用Koala更新
token_secret
?这可能吗? 最佳答案
我以为我会回答这个问题,因为这只是我遇到的需要做的事情。
Koala不久前在以下位置添加了对交换访问令牌的支持:
https://github.com/arsduo/koala/pull/166
因此,我的用户模型现在具有以下内容:
def refresh_facebook_token
# Checks the saved expiry time against the current time
if facebook_token_expired?
# Get the new token
new_token = facebook_oauth.exchange_access_token_info(token_secret)
# Save the new token and its expiry over the old one
self.token_secret = new_token['access_token']
self.token_expiry = new_token['expires']
save
end
end
# Connect to Facebook via Koala's oauth
def facebook_oauth
# Insert your own Facebook client ID and secret here
@facebook_oauth ||= Koala::Facebook::OAuth.new(client_id, client_secret)
end
关于ruby-on-rails-3 - 使用Koala续订Facebook访问 token ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8995035/