public static void LoadFBMLPage(FacebookService fbService, bool autoAdd, HttpRequest request, HttpResponse response) { string sessionKey = null; string userId = null; string inCanvas = request[REQUEST_IN_CANVAS]; fbService.IsDesktopApplication = false; if (string.IsNullOrEmpty(fbService.SessionKey) || string.IsNullOrEmpty(fbService.UserId)) { sessionKey = request[REQUEST_SESSION_KEY]; userId = request[REQUEST_USER_ID]; } else { sessionKey = fbService.SessionKey; userId = fbService.UserId; } // When the user uses the facebook login page, the redirect back here will will have the auth_token in the query params string authToken = request.QueryString[QUERY_AUTH_TOKEN]; // We have already established a session on behalf of this user if (!String.IsNullOrEmpty(sessionKey)) { fbService.SessionKey = sessionKey; fbService.UserId = userId; } //// This will be executed when facebook login redirects to our page else if (!String.IsNullOrEmpty(authToken)) { fbService.CreateSession(authToken); } else { //response.Redirect(@"http://www.facebook.com/login.php?api_key=" + fbService.ApplicationKey + @"&v=1.0"); response.Write("<fb:redirect url=\"" + FACEBOOK_LOGIN_URL + fbService.ApplicationKey + @"&v=1.0" + "\"/>"); response.End(); } if (!fbService.IsAppAdded() && autoAdd) { if ((!string.IsNullOrEmpty(inCanvas) && inCanvas.Equals("1")) || (!string.IsNullOrEmpty(request.Url.ToString()) && request.Url.ToString().ToLower().Contains("facebook.com"))) { response.Write("<fb:redirect url=\"" + FACEBOOK_ADD_URL + fbService.ApplicationKey + @"&v=1.0" + "\"/>"); response.End(); } else { response.Redirect(FACEBOOK_ADD_URL + fbService.ApplicationKey + @"&v=1.0"); } } }
private void EstablishSession(string sessionKey, string userId, string authToken, bool retry) { try { object sessionKeyFromSession = _useSession ? _session[SESSION_SESSION_KEY] : _request.Cookies[SESSION_SESSION_KEY]; if (String.IsNullOrEmpty(sessionKey) && sessionKeyFromSession != null) { sessionKey = _useSession ? sessionKeyFromSession.ToString() : ((HttpCookie)sessionKeyFromSession).Value; userId = _useSession ? _session[SESSION_USER_ID].ToString() : _request.Cookies[SESSION_USER_ID].Value; } if (!String.IsNullOrEmpty(sessionKey)) { _fbService.SessionKey = sessionKey; _fbService.UserId = userId; SetSessionInfo(sessionKey, userId); } //// This will be executed when facebook login redirects to our page else if (!String.IsNullOrEmpty(authToken)) { _fbService.CreateSession(authToken); SetSessionInfo(_fbService.SessionKey, _fbService.UserId); } else { RedirectToLogin(); return; } TryAddApp(); } catch (Facebook.Exceptions.FacebookTimeoutException) { if (retry) { ClearSessionInfo(); EstablishSession(null, null, authToken, false); } else { throw; } } }