Sne*_*ick 1 ruby-on-rails facebook-graph-api ruby-on-rails-3 fb-graph
我正在使用Rails 3 + fb_graph发布到我自己的Facebook页面.我有适用的代码,但它使用的访问令牌只能工作几个小时.每天刷新这个访问令牌非常烦人.所以我注册了一个FB应用程序.我现在有:
my_app = FbGraph::Application.new("App ID");
acc_tok = my_app.get_access_token("App Secret");
me = FbGraph::User.me(acc_tok)
me.fetch
me.accounts
account = me.accounts.select {|account| account if account.name == "BoaJobs.com"}.first
page = FbGraph::Page.new(account.identifier)
note = page.note!(:access_token => account.access_token, :subject => @title, :message => @message, :link => @url)
Run Code Online (Sandbox Code Playgroud)
但我在me.fetch行上收到错误:
OAuthException :: An active access token must be used to query information about the current user.
Run Code Online (Sandbox Code Playgroud)
有人可以发布一些代码来帮助我解决这个问题.非常感谢你提前.
小智 6
生病了,请转到https://github.com/nov/fb_graph/wiki/Page-Management
nov陈述:您需要页面的访问令牌来管理您的页面.您的(用户)访问令牌在此处不起作用.
按照他的链接到Facebook开发者网站获取更多信息
你需要用户access_token,我通过omniauth-facbook https://github.com/mkdynamic/omniauth-facebook这样做
通过首先将此初始化程序输入到您的应用程序中来检索用途
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],
:scope => 'email,user_birthday,read_stream', :display => 'popup'
end
Run Code Online (Sandbox Code Playgroud)
(注意你可以在这里更改范围的权限,检查facebook开发人员的登录权限以获取更多信息
omniauth和omniauth-facebook有一些内部工作方式,但是jist是当你从facebook获得回调时,你有一个来自请求的机架omniauth哈希
omniauth = request.env["omniauth.auth"]
Run Code Online (Sandbox Code Playgroud)
从那里你可以像这样访问用户访问令牌
facebook_user_token = omniauth['credentials']['token']
Run Code Online (Sandbox Code Playgroud)
然后,您可以将该令牌提供给fb_graph页面调用
page = FbGraph::Page.new('FbGraph').fetch(
:access_token => facebook_user_token,
:fields => :access_token
)
Run Code Online (Sandbox Code Playgroud)
然后,您只需通过调用所需方法即可创建注释,而无需引用访问令牌
note = page.note!(:subject => @title, :message => @message, :link => @url)
Run Code Online (Sandbox Code Playgroud)