找到或匹配Facebook好友的用户联系人的最佳方式?

时间:2011-12-26 07:08:47

标签: ruby-on-rails search facebook pattern-matching

我有一个用户,该用户有一堆联系人(有些联系人有“姓名”,所有人都有“电子邮件”)。联系人有一个image_url字段,我想显示该联系人的图片。我想从Facebook上提取这些图片。

假设User.first的电子邮件为“joe@test.com”,已在F​​acebook注册。

用户has_many联系人&&联系人belongs_to用户。

User.first.contacts 
#<Contact id: 1, ctct_name: "Stacy Blah", ctct_email: "stacy.blah@gmail.com", user_id: 1, img_url: nil>, 
#<Contact id: 2, ctct_name: nil, ctct_email: "dick.tracy@gmail.com", user_id: 1, img_url: nil>, 
#<Contact id: 3, ctct_name: "John Doe", ctct_email: "john_doe@gmail.com", user_id: 1, img_url: nil>

我有fb_graph在我的网站上工作(使用Devise:omniauthable)。

当User.first连接到Facebook时,我可以访问他们的fb令牌。所以我可以这样做:

facebook_user = FbGraph::User.new('me', :access_token => access_token).fetch
user_friends = facebook_user.friends

现在找到或匹配User.first.contacts到user_friends的最佳方法是什么? 理想情况下,我只想搜索Facebook连接电子邮件,如下所示:

email = Contact.first.ctct_email
search = FbGraph::User.search(email, :access_token => access_token = user['credentials']['token']) 
Contact.first.img_url = search[0].picture # or something like this

但Facebook API不会公开user_friends电子邮件!那么,我该怎么办?

我一直在尝试根据名称进行匹配,但我遇到两个问题:(1)contacts.name可能是nil,(2)user_friends.select {| f | f.name.include?(“John Doe”)}限制性太强,名称不完全匹配(例如,contact.name =“John Doe”,但Facebook将此人称为“John X. Doe”)。 / p>

我也尝试使用name参数= User.first.contacts [2] .name搜索FBGraph :: User.search。

search = FbGraph::User.search("John Doe", :access_token => access_token = user['credentials']['token']) 

但后来我有一个严重的消歧问题 - 搜索“John Doe”带来了数以千计的Facebook用户,他们不仅限于user_friends!

当然这是可能的。我已经看到了可以从Facebook为特定联系人提取图像的服务,其中包含的信息与电子邮件一样少。

感谢您的帮助!!

1 个答案:

答案 0 :(得分:2)

您可以通过电子邮件地址搜索Facebook用户:

https://graph.facebook.com/search?q=zuck@fb.com&type=user&access_token= ...

请注意,自12/21/11起,此功能目前无效accepted bug