0

このエラー メッセージについて他のスレッドを検索しましたが、解決策を見つけることができませんでした。

特定のコントローラーアクションがヒットしたときにfacebookに投稿する目的でgem「omniauth-facebook」(正しく機能しています)とgem「fb_graph」を使用しています(モデルに行を作成します)。

Facebook開発者ツールのアプリ設定で、現在、「ストリームの公開」と「ステータスの更新」の拡張権限を求めています。また、ユーザーとフレンドの権限で「公開アクション」を求めています。

初めてログインすると、サインインするだけです。アプリを公開したいと言っているにもかかわらず、何も求められません。これはなぜですか?SDK をまだ追加していません - これは問題ですか / これが理由でしょうか?

以下はいくつかのコードです

ありがとう!

フェイスブック初期化子

OmniAuth.config.logger = Rails.logger
 Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'my_id', 'my_key', {:scope => 'publish_stream'}
end

保存後に投稿しようとしているアクション。このアクションがヒットすると、私は取得します

「OAuthException :: (#200) ユーザーはアプリケーションがこのアクションを実行することを承認していません」

me.feedで!行が強調表示されます。

def create
@sub_opp = SubOpp.new(sub_opp_params)

respond_to do |format|
  if @sub_opp.save
    me = FbGraph::User.me(current_user.oauth_token)
    me.feed!(
    :message => 'Updating via FbGraph',
    )
    format.html { redirect_to sub_opps_url, notice: 'Sub opp was successfully created.' }
    format.json { render action: 'show', status: :created, location: @sub_opp }
  else
    format.html { render action: 'new' }
    format.json { render json: @sub_opp.errors, status: :unprocessable_entity }
  end
end

終わり

ユーザーモデル

class User < ActiveRecord::Base
 def self.from_omniauth(auth)
  where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
  user.provider = auth.provider
  user.uid = auth.uid
  user.gender = auth.extra.raw_info.gender
  user.email = auth.extra.raw_info.email
  user.name = auth.info.name
  user.oauth_token = auth.credentials.token
  user.oauth_expires_at = Time.at(auth.credentials.expires_at)
  user.image_url = auth.info.image
  user.save!
end

終了 終了

4

1 に答える 1

1

これは奇妙です-これは実際に機能します。rails s を再起動したことがないのではないかと思いますが、再起動したことは確かです。

上に表示されているものはすべて、Facebook への投稿に使用できます。

アプリの Facebook 開発者ツール設定の Facebook 権限セクションで、次の権限を持っています。

ユーザー & フレンド権限: publish_actions 拡張権限: publish_stream および status_update

乾杯

于 2013-10-09T14:50:34.203 に答える