Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 让OmniAuth、Desive和考拉一起工作_Ruby On Rails 3_Devise_Omniauth_Koala - Fatal编程技术网

Ruby on rails 3 让OmniAuth、Desive和考拉一起工作

Ruby on rails 3 让OmniAuth、Desive和考拉一起工作,ruby-on-rails-3,devise,omniauth,koala,Ruby On Rails 3,Devise,Omniauth,Koala,我有一个应用程序,其中我正在使用Desive和omniauth实现身份验证。我已经弄清楚了登录/注销等问题,我想知道的是,初始化并准备在我的应用程序中使用与users graph api端点的连接最有效的方法是什么 如果在个人资料页面上我想做 profile_image = current_user.fbgraph.get_picture("me") 我如何用最少的API调用来实现这一点(我将在整个应用程序中使用类似的调用)您可以使用类似的方法来实现这一点。对用户进行身份验证时,可以获取访问令

我有一个应用程序,其中我正在使用Desive和omniauth实现身份验证。我已经弄清楚了登录/注销等问题,我想知道的是,初始化并准备在我的应用程序中使用与users graph api端点的连接最有效的方法是什么

如果在个人资料页面上我想做

profile_image = current_user.fbgraph.get_picture("me")

我如何用最少的API调用来实现这一点(我将在整个应用程序中使用类似的调用)

您可以使用类似的方法来实现这一点。对用户进行身份验证时,可以获取访问令牌。假设您遵循了以下步骤,您可以这样做:

  def self.find_for_facebook_oauth(response, signed_in_resource=nil)
    data = response['extra']['user_hash']
    access_token = response['credentials']['token']
    user = User.find_by_email(data["email"])
    # only log in confirmed users
    # that way users can't spoof accounts
    if user and user.confirmed?
      user.update_attribute('fb_access_token', access_token) 
      user
    end
  end
获得访问令牌后,您可以执行以下操作:

@graph = Koala::Facebook::API.new(@user.fb_access_token)
profile_image = @graph.get_picture("me")

在我的应用程序中,我检查当来自Facebook的回调到来时是否有用户登录。如果是的话,我想请求是链接帐户。如果不是,我假设这是一个登录请求。

小注:对于最新的考拉,上面的一行应该是
@graph=Koala::Facebook::API.new(@user.fb\u access\u token)
(GraphAPI现在只是API)。你会把@graph=Koala::Facebook::API.new(@user.fb\u access\u token)代码行放在哪里?(假设我们正在使用Desive和omniauth)。此外,self.find_for_facebook_oauth代码看起来与我的代码完全不同,尽管我完全按照Desive wiki所展示的方式操作。