我在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/

10-11 15:34