如何获取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
答案 0 :(得分:1)
您需要使用登录范围请求访问用户的可见圈子,然后对集合visible
执行对plus.people.list的API调用。
有关如何使用Ruby的API的工作演示,请查看Google+ Ruby Quickstart。有关集成rails的示例,请查看Photohunt Ruby sample。
答案 1 :(得分:0)
这有点像黑客/解决方法:
这远非完美,但它是一个简单的解决方法,可以将您的连接作为列表。