У меня есть пользователь, и у этого пользователя есть несколько контактов (у некоторых контактов есть «имя», а у всех - «электронная почта»).У контактов есть поле для image_url, и я хочу показать картинку для этого контакта.Я хочу вытащить эти картинки из Facebook.
Предположим, у User.first есть электронная почта "joe@test.com", которая зарегистрирована в Facebook.
У пользователя есть много контактов и контактов принадлежит пользователю.
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 connect для электронной почты , например:
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").
Я также попытался выполнить поиск FBGraph :: User.search с параметром name = User.first.contacts [2] .name.
search = FbGraph::User.search("John Doe", :access_token => access_token = user['credentials']['token'])
Но тогда у меня возникла серьезная проблема устранения неоднозначности - поиск «Джон Доу» поднимает тысячи пользователей Facebook, и они не ограничены user_friends!
Конечно, это возможно.Я видел службы, которые могут получить изображение из Facebook для данного контакта, с такой же маленькой информацией, как электронная почта.
Спасибо за помощь !!