如何使用Koala gem获取Facebook用户的图片?

时间:2011-03-20 08:24:16

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

我正在尝试使用Facebook用户的朋友的照片 他们的facebook ID,但使用以下代码返回nil 图片网址...

我使用的代码如下:

picture_url = @user.get_picture("1000000111")

其中@user是使用Facebook制作的Graph API对象 认证...

此代码中缺少什么?提前致谢。

6 个答案:

答案 0 :(得分:14)

在ruby上获取所有facebook朋友的图像。你可以使用考拉宝石 https://github.com/arsduo/koala

它有很好的演绎

要获得facebbok朋友,您可以使用

@graph = Koala::Facebook::API.new(oauth_access_token)
friends = @graph.get_connections("me", "friends")
friends.each do |f|
  f[:image]= @graph.get_picture(f["id"])
end

但是这种方法需要花费太多时间,因为你必须为每个朋友发送请求。

为避免这种情况,您可以使用koala支持的REST API,

@rest = Koala::Facebook::API.new(oauth_access_token)
@rest.fql_query(my_fql_query) 
@rest.fql_multiquery(fql_query_hash) # convenience method

要编写Fql查询,您可以使用可在http://developers.facebook.com/docs/reference/fql/

找到的facebook表结构

获得Facebook uid,名称和图片你可以使用这个..

@rest.fql_query("select uid, name, pic_square from user where uid in (select uid2 from friend where uid1 = me())")

答案 1 :(得分:12)

您还可以使用get_connection()获取所有朋友的照片,如下所示

friends = @graph.get_connections("me", "friends?fields=id,name,picture.type(large)")

答案 2 :(得分:5)

我通过直接使用Cody在图片标签中指定的网址来获取图片,如下所示



img  src="http://graph.facebook.com/10000010000001/picture" />

img  src="http://graph.facebook.com/user_profile_id/picture" />


答案 3 :(得分:3)

使用您从oauth收到的访问令牌

graph = Koala::Facebook::GraphAPI.new(access_token)
profile_path = graph.get_picture(uid)

要获取路径,然后显示它

<%= image_tag profile_path %>

这对我有用,应该适合你......

答案 4 :(得分:3)

  USER_PROFILE_OPTIONS = {
    fields: %w(id first_name last_name hometown email 
               gender birthday picture.width(320))
  }.freeze
  @graph = Koala::Facebook::API.new(oauth_access_token)
  @graph.get_object('me', USER_PROFILE_OPTIONS)

请参阅:https://developers.facebook.com/docs/graph-api/reference/user/picture/

答案 5 :(得分:2)

我不了解考拉,但如果你要求用户的标识符(以graph.facebook.com/odedharth/picture的形式),你可以得到它。