Rails网站在注册时不要求发布facebook权限

时间:2013-10-09 01:01:07

标签: ruby-on-rails facebook-graph-api

我在其他线程中搜索了此错误消息,但无法解决该问题。

我正在使用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 个答案:

答案 0 :(得分:1)

这很奇怪 - 这实际上现在有效。我想知道我是不是刚刚重新开始我的导轨,尽管我很确定我做了。

您在上面看到的所有内容都适用于发布到Facebook。

在您的应用Facebook开发者工具设置的Facebook权限部分,我有以下权限。

用户&amp;朋友权限:publish_actions 扩展权限:publish_stream和status_update

干杯