Добавить друзей из Facebook с Rails 3 + OmniAuth + FBGraph - PullRequest
2 голосов
/ 14 октября 2011

В настоящее время я пытаюсь написать шаг добавления друзей в нашу систему регистрации, и меня попросили внедрить что-то похожее на работу foursquare.

Он выводит ваших друзей из Facebook, проверяетчтобы увидеть, есть ли какие-либо из них уже на сайте foursquare, а затем спросит, хотите ли вы с ними связаться.

Каков наилучший способ реализации такого рода функциональности?

Я видел примеры с FB JS SDK, однако я бы предпочел более интегрированный подход.

Спасибо Адам

1 Ответ

3 голосов
/ 14 октября 2011

Лучший способ, который я нашел, это использовать devise с oauth и гемами fb_graph (как указано здесь и здесь ).У меня возникла проблема с версиями, поэтому моя конфигурация gemfile выглядит следующим образом:

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
gem 'omniauth', '>=0.2.0.beta'
gem 'oa-oauth', :require => 'omniauth/oauth'
gem 'fb_graph'

(моя конфигурация довольно старая - возможно, что последняя ветка разработки теперь поддерживает omniauth в более готовом виде)путь).

инициализатор моего устройства:

config.omniauth :facebook_publish, "APP_ID", "APP_SECRET"

В вашей пользовательской модели:

devise :omniauthable

и

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
  data = access_token['extra']['user_hash']
  if user = User.find_by_email(data["email"])
    user
  else # Create a user with a stub password. 
    User.create(:email => data["email"], :password => Devise.friendly_token[0,20]) 
  end
end

Для того, чтобы Facebookподключиться - перейти по пути:

user_omniauth_authorize_path(:facebook)

По сути, это все, что вам нужно для подключения.Чтобы получить график, я сейчас использую:

 facebook_user = FbGraph::User.new('me', :access_token => access_token['credentials']['token']).fetch

А для друзей:

facebook_user.friends

И все.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...