我搜索了關於此錯誤消息的其他線程,但無法找出解決方案。Rails站點在註冊後不會向請求發佈到Facebook的權限
我使用gem'omniauth-facebook'進行身份驗證(正常工作)和gem'fb_graph',當某些控制器操作被擊中(在模型中創建行)時發佈到Facebook。
在我的Facebook開發人員工具的應用程序設置中,我目前要求擴展權限「發佈流」和「狀態更新」。另外,我要求用戶&朋友權限中的「發佈操作」。
當我第一次登錄時,它只是讓我登錄 - 儘管我說要讓應用程序發佈,但它並不要求任何內容。任何想法,爲什麼這是?我還沒有添加SDK - 這是否重要/這可能是爲什麼?
以下是一些代碼
謝謝!
的Facebook初始那裏我試圖保存後發佈
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
末 結束