Skip to content

Instantly share code, notes, and snippets.

@dhchow
Created August 15, 2010 07:40
Show Gist options
  • Save dhchow/525221 to your computer and use it in GitHub Desktop.
Save dhchow/525221 to your computer and use it in GitHub Desktop.

Revisions

  1. dhchow created this gist Aug 15, 2010.
    50 changes: 50 additions & 0 deletions gistfile1.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    <% if flash[:error].present? %>
    <h3><%= flash[:error] %></h3>
    <% else %>
    <div id="fb-root"></div>
    <div id="error-message"></div>
    <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
    <script type="text/javascript">
    window.fbAsyncInit = function() {
    FB.init({
    appId : "<%= Facebook::CONFIG['app_id'] %>",
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml : true // parse XFBML
    });
    var cb = function(response) {
    if (response.session) {
    // user successfully logged in
    load_pages(response.session.uid);
    } else {
    // user isn't logged in for some reason, prompt again.
    FB.login(cb);
    //document.getElementById("error-message").innerHTML = "Unable to connect to Facebook.";
    }
    };
    (function() {
    FB.getLoginStatus(cb);
    }());
    };
    function load_pages(fb_user_id) {
    FB.api(
    {
    method: "fql.multiquery",
    queries: {
    "query1" : "SELECT page_id FROM page_admin WHERE uid=" + fb_user_id,
    "result" : "SELECT page_id, name FROM page WHERE page_id IN (SELECT page_id FROM #query1)"
    }
    },
    function(response) {
    // TODO what if user doesn't have any pages?
    var results = response[response.length-1].fql_result_set; // [{name, page_id}, ...]
    if(window.opener.addChannelsForm != null)
    window.opener.addChannelsForm.loadChannels(results, {medium: 'facebook', success: false});
    window.close();
    }
    );
    }
    </script>
    <% end %>