获取Google Plus中的朋友列表

时间:2014-05-21 14:41:13

标签: ruby-on-rails ruby-on-rails-4 google-plus

如何获取current_user的好友列表(名称和图片网址)?我正在使用FB和G +进行身份验证。我能够获得通过FB connect登录的用户的朋友列表。

我找到了 google-api-ruby-client gem,但我不知道如何在这种情况下使用它。还有this官方链接。

user.rb

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

    def fbfriends
     @graph = Koala::Facebook::API.new(oauth_token)
        begin
          @fbfriends = @graph.get_connections("me", "friends", fields: "id")
          @uids = @fbfriends.map{ |v| v.values }.flatten
        rescue Koala::Facebook::AuthenticationError => e
          redirect_to '/auth/facebook'
        end
          @friends = User.where(uid: @uids)
    end

omniauth.rb

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'xxx', 'xxx',{
    :image_size => 'large'
    }
  provider :google_oauth2, 'xxx', 'xxx',{
      :image_aspect_ratio => "original",
      :image_size => 200
    }
end

2 个答案:

答案 0 :(得分:1)

您需要使用登录范围请求访问用户的可见圈子,然后对集合visible执行对plus.people.list的API调用。

有关如何使用Ruby的API的工作演示,请查看Google+ Ruby Quickstart。有关集成rails的示例,请查看Photohunt Ruby sample

答案 1 :(得分:0)

这有点像黑客/解决方法:

  1. 将生日日历添加到您的Google日历
  2. 选择仅显示此日历'
  3. 将日历视为日程
  4. 这远非完美,但它是一个简单的解决方法,可以将您的连接作为列表。