我有一个用户,该用户有一堆联系人(有些联系人有“姓名”,所有人都有“电子邮件”)。联系人有一个image_url字段,我想显示该联系人的图片。我想从Facebook上提取这些图片。
假设User.first的电子邮件为“joe@test.com”,已在Facebook注册。
用户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为特定联系人提取图像的服务,其中包含的信息与电子邮件一样少。
感谢您的帮助!!
答案 0 :(得分:2)
您可以通过电子邮件地址搜索Facebook用户:
https://graph.facebook.com/search?q=zuck@fb.com&type=user&access_token= ...
请注意,自12/21/11起,此功能目前无效accepted bug。