Ruby on rails 使用考拉和Rails将视频发布到Facebook应用程序

Ruby on rails 使用考拉和Rails将视频发布到Facebook应用程序,ruby-on-rails,facebook,facebook-graph-api,oauth,koala,Ruby On Rails,Facebook,Facebook Graph Api,Oauth,Koala,我正试图将一段视频上传到Facebook应用程序墙上,该视频是用户使用考拉宝石上传的 当我试图使用 put_connections("APP_ID", "APP_NAME:upload", video: "VIDEO_FILE") 我得到这个错误: OAuthException: (#240) Requires a valid user is specified (either via the session or via the API parameter for specifying th

我正试图将一段视频上传到Facebook应用程序墙上,该视频是用户使用考拉宝石上传的

当我试图使用

put_connections("APP_ID", "APP_NAME:upload", video: "VIDEO_FILE")
我得到这个错误:

OAuthException: (#240) Requires a valid user is specified (either via the session or via the API parameter for specifying the user.
这是我的档案:

视频控制器.rb video.rb 我正在使用omniauth facebook gem对用户进行身份验证,如本屏幕广播所示:

有人知道我为什么会犯这个错误吗?我肯定仍然登录,这意味着会话和oauth令牌仍然有效。有什么建议吗

使现代化 这是我的用户模型

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.name = auth.info.name
        user.email = auth.info.email
        user.oauth_token = auth.credentials.token
        user.oauth_expires_at = Time.at(auth.credentials.expires_at)
        user.save!
     end
   end

   def facebook
        @facebook ||= Koala::Facebook::API.new(oauth_token)
   end

end
更新2 这是我用来设置和删除会话的控制器:

class SessionsController < ApplicationController

    def create
        user = User.from_omniauth(env["omniauth.auth"])
        session[:user_id] = user.id
        redirect_to root_url
    end

    def destroy
        session[:user_id] = nil
        redirect_to root_url
    end

end

什么是用户。facebook??您是否正在user.facebook中保存用户的完整考拉类?根据新的Facebook规则,代币只有在你拿到后24小时内才有效。您能把实际保存用户完整facebook对象的步骤放在哪里吗。@ShreyasAgarwal刚刚添加了我的用户模型的内容,谢谢您的回复。我使用它的方式类似于:User.findsession[:User_id].facebook.put_connections…@shryasagarwal还添加了我的会话控制器,并将其添加到您的用户模型@facebook | |=Koala::facebook::API.newself.oauth_令牌中
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.name = auth.info.name
        user.email = auth.info.email
        user.oauth_token = auth.credentials.token
        user.oauth_expires_at = Time.at(auth.credentials.expires_at)
        user.save!
     end
   end

   def facebook
        @facebook ||= Koala::Facebook::API.new(oauth_token)
   end

end
class SessionsController < ApplicationController

    def create
        user = User.from_omniauth(env["omniauth.auth"])
        session[:user_id] = user.id
        redirect_to root_url
    end

    def destroy
        session[:user_id] = nil
        redirect_to root_url
    end

end