Beispiel #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        // Login Scenario
        FaceBookAppKey = ConfigurationManager.AppSettings["facebookAppKey"];

        int userId = Tools.GetUserIdFromCookie(Context);
        User user = null;

        if (userId > 0)
        {
            // user already logged in, get his details by cookie
            // Get User By Id

            PostAroundServiceClient client = new PostAroundServiceClient();
            user = client.GetCurrentUser(userId);
            client.Close();

        }
        else
        {
            // user isnt logged in

            string facebookReturnedServerCode = Request.QueryString["code"];

            string accessToken = null;

            // in case of returned from facebook login
            // continue the flow to get the user details
            if (!string.IsNullOrWhiteSpace(facebookReturnedServerCode))
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                string url = Request.RawUrl;
                int index = url.IndexOf("code=");
                if (index > 0)
                {
                    url = url.Substring(0, index - 1);
                }

                /*
                string page = Path.GetFileNameWithoutExtension(HttpContext.Current.Request.Url.AbsoluteUri).ToLower();
                if (page == "post")
                {
                    sb.Append(siteUrl);
                    string id = Request.QueryString["id"];
                    string title = Request.QueryString["title"];
                    if (!string.IsNullOrWhiteSpace(id) && !string.IsNullOrWhiteSpace(id))
                    {
                        sb.Append("post/" + id);
                        sb.Append("/" + title);
                    }
                }
                else
                {
                    Uri uri = new Uri(Request.Url.AbsoluteUri);
                    string address = Tools.GetQueryStringByKey(uri, "address");
                    string url = siteUrl;
                    if (address != null && address != "")
                    {
                        url = Tools.GetFriendlyUrl(siteUrl, address, true);
                    }

                    sb.Append(url);
                }
                */

                //string page = Path.GetFileNameWithoutExtension(Request.Url.AbsolutePath);
                //page = page.ToLower();

                //string encodedState = Request.QueryString["state"];
                //if (!String.IsNullOrWhiteSpace(encodedState))
                //{

                //    string decodedState = Tools.DecodeFrom64(encodedState);
                //    FacebookLoginState fls = ParseStateJSON(decodedState);
                //    url = url + page + "/" + fls.id;
                //}
                //else
                //{
                //    if (page != "default")
                //    {
                //        url += page + ".aspx";
                //    }
                //}

                SaveEncryptedCodeInCookie(facebookReturnedServerCode);
                Response.Redirect(domain + url);
                return;

            }
            else
            {
                HttpCookie cookie = Request.Cookies["FacebookServerCode"];
                if (cookie != null)
                {
                    if (!string.IsNullOrEmpty(cookie["code"]))
                    {
                        string encCode = cookie["code"];
                        encCode = encCode.Replace('$', '+');
                        facebookReturnedServerCode = Tools.Decrypt(encCode, true);

                    }

                    if (!string.IsNullOrWhiteSpace(facebookReturnedServerCode))
                    {
                        accessToken = GetFacebookAccessToken(facebookReturnedServerCode);
                        // pass the access token to function to get the UserDetails
                        if (!string.IsNullOrWhiteSpace(accessToken))
                        {
                            user = GetUserDetailsFromToken(accessToken);
                            //save the user in db
                            userId = SaveUserInDB(user);

                            //no need this. i added in sql
                            //SetUserEmailPemission(userId);

                        }
                    }
                    CleanCookie("FacebookServerCode");

                }
            }
        }

        if (!IsPostBack)
        {
            if (user != null && userId > 0)
            {
                //save cookie with userId
                string encUserId = Tools.SetUserIdInCookie(userId, Context);

                //Show UserName and Picture on page
                DisplayDetailsOnPage(user);

                //Show User Div
                ShowUserDiv();

                //Return LoggedInResponse
                SetClientResponse(user, encUserId);

                //Set AccessToken
            }
        }
    }