簡體   English   中英

自動關注Facebook朋友

[英]Auto-follow Facebook friends

我試圖讓用戶自動在我的應用程序中關注他們的FB朋友。 我可以獲取用戶的FB朋友的ID,但是我不知道如何進行自動關注。

我得到了他們朋友的uid(fb id),所以我想我需要在我的應用中找到其uid與用戶fb朋友列表的uid匹配的用戶,然后使用戶自動關注這些用戶。 你會怎么做?

user.rb

  has_many :relationships, foreign_key: "follower_id", dependent: :destroy
  has_many :followed_users, through: :relationships, source: :followed
  has_many :reverse_relationships, foreign_key: "followed_id",
                                   class_name:  "Relationship",
                                   dependent:   :destroy
  has_many :followers, through: :reverse_relationships, source: :follower

  def self.from_omniauth(auth)
      where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
        user.provider = auth.provider
        user.uid = auth.uid
        user.name = auth.info.name
        user.first_name = auth.info.first_name
        user.last_name = auth.info.last_name
        user.email = auth.info.email
        user.image = auth.info.image
        user.oauth_token = auth.credentials.token
        user.oauth_expires_at = Time.at(auth.credentials.expires_at)
        user.save!
       end
  end

#gets uid of user's fb friends

   def fbfriends
     @graph = Koala::Facebook::API.new(oauth_token)
        begin
          @fbfriends = @graph.get_connections("me", "friends", fields: "id")
          @uids = @fbfriends.map{ |v| v.values }.flatten
        rescue Koala::Facebook::AuthenticationError => e
          redirect_to '/auth/facebook'
        end
          @friends = User.where(uid: @uids)
    end

  def fb_user_id
    self.fbfriends.map{ |v| v.id }
  end

   after_create :follow_fbfriends!

  def follow_fbfriends!
    relationships.create!(followed_id: fb_user_id)
  end

用戶展示

<%= @user.fb_user_id %>

瀏覽器輸出

[1]

可能的步驟:

  1. @fbfriends ,獲取用戶朋友的UID
  2. @friends = User.where(uid: @fbfriends)將為所有這些UID提供所有存在的用戶配置文件。
  3. @friends該用戶和好友的@friends和建立關系b / w以便followers

編輯

可以看出,代碼中的@fbfriends返回的是散列數組,而不僅僅是UID。 因此,首先,將UID提取為:

@uids = @fbfriends.map{ |v| v.values }.flatten
#=> ['1654449181']

現在,將此新數組與User.where(uid: @uids)一起使用,以檢索具有這些UID(如果存在)的用戶。 對於與用戶建立黑白關系,您可能需要閱讀Michael Hartl的指南章節

編輯2 :在follow_friends! ,您必須遍歷所獲得的朋友ID,並為每個朋友ID建立關系,如下所示:

def follow_fbfriends!
  fb_user_id.each do |friend_id|
    relationships.create!(followed_id: friend_id)
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM