/* * The facebook_onload statement is printed out in the PHP. If the user's logged in * status has changed since the last page load, then refresh the page to pick up * the change. * * This helps enforce the concept of "single sign on", so that if a user is signed into * Facebook when they visit your site, they will be automatically logged in - * without any need to click the login button. * * @param already_logged_into_facebook reports whether the server thinks the user * is logged in, based on their cookies * */ function facebook_onload(already_logged_into_facebook) { // user state is either: has a session, or does not. // if the state has changed, detect that and reload. FB.ensureInit(function() { FB.Connect.get_status().waitUntilReady( function( status ) { switch ( status ) { case FB.ConnectState.connected: loggedIn = true; break; case FB.ConnectState.appNotAuthorized: case FB.ConnectState.userNotLoggedIn: loggedIn = false; } }); /* FB.Facebook.get_sessionState().waitUntilReady(function(session) { var is_now_logged_into_facebook = session ? true : false; // if the new state is the same as the old (i.e., nothing changed) // then do nothing if (is_now_logged_into_facebook == already_logged_into_facebook) { return; } // otherwise, refresh to pick up the state change refresh_page(); }); */ }); } /* * Our specifies this function in its onlogin attribute, * which is triggered after the user authenticates the app in the Connect * dialog and the Facebook session has been set in the cookies. */ function facebook_onlogin_ready() { FB.Connect.ifUserConnected("/index.php?login", null); // In this app, we redirect the user back to index.php. The server will read // the cookie and see that the user is logged in, and will deliver a new page // with content appropriate for a logged-in user. // // However, a more complex app could use this function to do AJAX calls // and/or in-place replacement of page contents to avoid a full page refresh. // refresh_page(); } /* * Do a page refresh after login state changes. * This is the easiest but not the only way to pick up changes. * If you have a small amount of Facebook-specific content on a large page, * then you could change it in Javascript without refresh. */ function refresh_page() { window.location = 'index.php'; } /* * Prompts the user to grant a permission to the application. */ function facebook_prompt_permission(permission) { FB.ensureInit(function() { FB.Connect.showPermissionDialog(permission); }); } function facebook_log_out(){ FB.ensureInit(function() { FB.Connect.logout(function() { refresh_page(); }); }); } /* * Show the feed form. This would be typically called in response to the * onclick handler of a "Publish" button, or in the onload event after * the user submits a form with info that should be published. * */ function facebook_publish_feed_story(user_message) { // Load the feed form FB.ensureInit(function() { // FB.Connect.showFeedDialog(form_bundle_id, template_data); // FB.Connect.showFeedDialog(form_bundle_id, template_data, null, null, FB.FeedStorySize.shortStory, FB.RequireConnect.promptConnect); FB.Connect.streamPublish(user_message,''); // hide the "Loading feed story ..." div ge('feed_loading').style.visibility = "hidden"; }); } /* * If a user is not connected, then the checkbox that says "Publish To Facebook" * is hidden in the "add run" form. * * This function detects whether the user is logged into facebook but just * not connected, and shows the checkbox if that's true. */ function facebook_show_feed_checkbox() { FB.ensureInit(function() { FB.Connect.get_status().waitUntilReady(function(status) { if (status != FB.ConnectState.userNotLoggedIn) { // If the user is currently logged into Facebook, but has not // authorized the app, then go ahead and show them the feed dialog + upsell checkbox = ge('publish_fb_checkbox'); if (checkbox) { checkbox.style.visibility = "visible"; } } }); }); }