2013-10-09 36 views
0

我搜索了關於此錯誤消息的其他線程,但無法找出解決方案。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 

末 結束

回答

1

這很奇怪 - 這其實現在的作品。我想知道我是否從未重新啓動過我的導軌,雖然我很確定我做過。

您在上面看到的所有內容都適用於發佈到Facebook。

在您的應用程序facebook開發人員工具設置的Facebook權限部分中,我擁有以下權限。

用戶&朋友權限:publish_actions 擴展權限:publish_stream和status_update

乾杯

相關問題