1

Rails 3 + fb_graph を使用して、自分の Facebook ページに投稿しています。動作するコードがありますが、数時間しか動作しないアクセス トークンを使用しています。そして、このアクセス トークンを 1 日に数回更新するのは非常に面倒です。ということで、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)

しかし、me.fetch 行でエラーが発生します。

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

誰かがこの問題を解決するのに役立つコードを投稿できますか? 事前にどうもありがとうございました。

4

1 に答える 1

6

https://github.com/nov/fb_graph/wiki/Page-Managementを参照してください

ページを管理するには、ページのアクセス トークンが必要です。あなたの (ユーザーの) アクセス トークンはここでは機能しません。

詳細については、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

(ここでスコープのアクセス許可を変更できることに注意してください。詳細については、Facebook 開発者のログイン アクセス許可を確認してください。

omn​​iauth と omniauth-facebook にはいくつかの内部動作がありますが、要点は、facebook からコールバックを取得すると、リクエストからラック omniauth ハッシュが得られることです。

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)
于 2013-02-03T03:56:09.343 に答える