Facebookを介してアプリにサインアップしたユーザーのすべての連絡先をフェッチするkoalaを使用する方法があります。
「ライブ」で実行すると動作します。しかし、時間がかかるので、延期しました。
問題は、delayed_job で実行すると、完全なリストではなく、1 つの連絡先のみが取得されることです。
以前にこの問題に遭遇した人はいますか?
ここにコードがあります
In Sessions#create
service = Service.from_omniauth(env["omniauth.auth"])
service.delay.get_contacts if Rails.env.production?
service.rb の get_contacts 関数
def get_contacts(network_size = 10)
@graph = Koala::Facebook::API.new(token).get_connections("me", "friends")
saved_contacts = user.friendships.count - 1
total_contacts = @graph.count
if total_contacts - saved_contacts > 0
connections = @graph[saved_contacts..-1]
else
connections = nil
end
if !connections.nil?
connections.each do |hash|
Service.where(:provider => 'facebook', :uid => hash['id']).first_or_initialize.tap do |contact|
contact.provider = 'facebook'
contact.uid = hash['id']
contact.save!
Relationship.where(:user_id => user, :contact_id => contact).first_or_create
end
end
end