Rails3+fb_graph如何获得访问令牌以发布到我自己的fb页面



我正在使用Rails3+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)

但我在我的电话上遇到了一个错误。电话线:

OAuthException :: An active access token must be used to query information about the current user.

有人能发布一些代码来帮助我解决这个问题吗。事先非常感谢。

我会推荐您https://github.com/nov/fb_graph/wiki/Page-Management

nov指出:您需要页面的访问令牌来管理您的页面。您(用户)的访问令牌在此不起作用。

点击他的链接到facebook开发者网站了解更多信息

你需要用户access_token,我通过omniauthfacbook来完成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

(请注意,您可以在此处更改范围上的权限查看facebook开发者的登录权限以了解更多

omniauth和omniauthfacebook有一些内部工作机制,但jist是当你从facebook得到回调时,你有一个来自请求的机架omnauth散列

omniauth = request.env["omniauth.auth"]

从那里你可以访问用户访问令牌,比如这个

facebook_user_token = omniauth['credentials']['token']

然后,您可以将该令牌输入到名为的fb_graph页面中

page = FbGraph::Page.new('FbGraph').fetch(
:access_token => facebook_user_token,
:fields => :access_token
)

然后,您就可以通过调用所需的方法来创建一个注释,而无需引用访问令牌

note = page.note!(:subject => @title, :message => @message, :link => @url)

相关内容

最新更新