rails and facebook connect

05 Mar 2010

最近项目需要做一些facebook应用,比如要允许用户登录facebook,要获取用户facebook的好友信息等等。登录facebook自然选用时下流行的facebook connect。代码写起来非常简单,用户的体验也非常好。

首先,进入facebook的开发者页面http://developers.facebook.com/,点击Start building for your site,开始创建你的facebook应用,按照提示一步一步继续。需要注意的是,你可能需要创建两个应用,一个针对本地development环境,一个针对production环境。

接着,安装facebooker的gem,并且加入到rails gem依赖。在config目录下创建facebooker.yml文件,内容为

development:
  api_key:
  secret_key:
  canvas_page_name: localhost
  callback_url: http://localhost:3000
  pretty_errors: true
  set_asset_host_to_callback_url: true
  tunnel:
    public_host_username:
    public_host:
    public_port: 4007
    local_port: 3000
    server_alive_interval: 0

production:
  api_key:
  secret_key:
  canvas_page_name:
  callback_url:
  set_asset_host_to_callback_url: true
  tunnel:
    public_host_username:
    public_host:
    public_port: 4007
    local_port: 3000
    server_alive_interval: 0

在application_controller文件中增加如下代码

before_filter :set_facebook_session
helper_method :facebook_session

facebook_session即为用户登录facebook之后所获取的session,通过它可以获取facebook用户相关的所有信息。

然后就是在html header中引入facebook所需的javascript

<%= fb_connect_javascript_tag %>
<%= init_fb_connect "XFBML", :js => :jquery %>

最后就是在页面上显示facebook登录的图片和文字

<%= fb_login_button %>

你也可以只显示facebook的icon,并且在用户登录之后刷新页面

<%= fb_login_button("window.location.reload(true);", :size => "icon", :v => "2") %>

用户登录facebook之后,你就可以获取到用户和其好友的信息,比如

<%= facebook_session.user.name %>

<% facebook_session.user.friends.each do |friend| %>
  <%= image_tag friend.pic_square if friend.pic_square %>
  <%= friend.first_name %>
  <%= friend.last_name %>
<% end %>

详细的接口可以看看facebooker的rdoc。

Tags 


blog comments powered by Disqus