【发布时间】:2012-06-30 15:20:38
【问题描述】:
我正在使用 rails 3 并使用 koala gem 连接到 facebook graph api。 我正在使用omniauth 对用户进行身份验证。
所以当新用户登录到站点时,session_controller 会处理新用户:
class SessionsController < ApplicationController
def create
user = User.from_omniauth(env['omniauth.auth'])
session[:user_id] = user.id
redirect_to root_url, notice: "Signed in!"
end
create方法调用User.rb模型中的“from_omniauth”类方法,创建一个新用户:
class User < ActiveRecord::Base
has_many :friends
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.image = auth["info"]["image"]
user.email = auth["info"]["email"]
user.gender = auth["extra"]["raw_info"]["gender"]
user.location = auth["extra"]["raw_info"]["location"]["name"]
user.token = auth["credentials"]["token"]
end
user.save!
end
我还想保存用户的 facebook 好友并将其存储在一个名为好友的单独表格中,所以我制作了这个好友模型:
class Friend < ActiveRecord::Base
attr_accessible :name
belongs_to :user
validates :user_id, presence: true
def facebook
@Facebook ||= Koala::Facebook::API.new(token)
end
def add_friends
facebook { |fb| fb.get_connection("me", "friends") }
end
end
但是我不知道如何存储用户朋友,我想知道:
- 如何创建用户并将其存储为好友
- 我应该在哪里调用 add_friends 方法?
- fb.get_connection("me", "friends") 返回一个哈希数组,例如
> [{"name"=>"Johan Gyllenspetz", "id"=>"3624556"}, {"name"=>"Gustaf Josefsson",。我想存储名称和uid。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 facebook-graph-api koala