我在我的Ruby on Rails应用程序中使用FbGraph以及Omniauth。我使用服务器端方法为用户获取长期(60天)访问令牌,然后将其存储在会话变量中。尝试使用以下代码访问API时:
token = session[:facebook_token]
user = FbGraph::User.me(token)
user = user.fetch
我得到OAuthException :: Invalid OAuth access token
。但是,当我添加puts token
并将打印的令牌复制到Facebook Graph API Explorer(在线工具)时,我没有任何问题,并且令牌被报告为有效...我甚至可以通过FbGraph使API调用失败。
我正在使用JavaScript SDK中的短期令牌(2小时),并且相同的代码工作正常,所以关于转移到长期令牌的一些事情是搞砸了一切。
答案 0 :(得分:0)
您如何设置session[:facebook_token]
?这听起来像是字符编码问题,甚至可能只是额外的空格。
为什么不试试user = FbGraph::User.me(token.strip)
此外,您可以像下面这样更新(扩展)访问令牌:https://github.com/nov/fb_graph#extend-access-token-lifetime