예제 #1
0
        /// <summary>
        /// Handles the facebook return.
        /// </summary>
        private void HandleFacebookReturn()
        {
            var facebookAuth = new Facebook();

            if (YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("code") != null)
            {
                var authorizationCode = YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("code");
                var accessToken       = facebookAuth.GetAccessToken(authorizationCode, this.Request);

                if (accessToken.IsNotSet())
                {
                    this.Response.Write(
                        "{2} alert('{0}');window.location.href = '{1}'; {3}".FormatWith(
                            YafContext.Current.Get <ILocalization>().GetText("AUTH_NO_ACCESS_TOKEN"),
                            YafBuildLink.GetLink(ForumPages.login).Replace("auth.aspx", "default.aspx"),
                            SCRIPTBEGINTAG,
                            SCRIPTENDTAG));

                    return;
                }

                if (YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("state") != null &&
                    YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("state")
                    == "connectCurrent")
                {
                    string message;

                    try
                    {
                        facebookAuth.ConnectUser(this.Request, accessToken, out message);
                    }
                    catch (Exception ex)
                    {
                        YafContext.Current.Get <ILogger>().Error(ex, "Error while trying to connect the facebook user");

                        message = ex.Message;
                    }

                    if (message.IsSet())
                    {
                        this.Response.Write(
                            "{2} alert('{0}');window.location.href = '{1}'; {3}".FormatWith(
                                message,
                                YafBuildLink.GetLink(ForumPages.forum).Replace("auth.aspx", "default.aspx"),
                                SCRIPTBEGINTAG,
                                SCRIPTENDTAG));
                    }
                    else
                    {
                        YafBuildLink.Redirect(ForumPages.forum);
                    }
                }
                else
                {
                    string message;

                    try
                    {
                        facebookAuth.LoginOrCreateUser(this.Request, accessToken, out message);
                    }
                    catch (Exception ex)
                    {
                        YafContext.Current.Get <ILogger>()
                        .Error(ex, "Error while trying to login or register the facebook user");

                        message = ex.Message;
                    }

                    this.Response.Clear();

                    if (message.IsSet())
                    {
                        this.Response.Write(
                            "{2} alert('{0}');window.location.href = '{1}';window.close(); {3}".FormatWith(
                                message,
                                YafBuildLink.GetLink(ForumPages.login).Replace("auth.aspx", "default.aspx"),
                                SCRIPTBEGINTAG,
                                SCRIPTENDTAG));
                    }
                    else
                    {
                        this.Response.Write(
                            "{1} window.location.href = '{0}';window.close(); {2}".FormatWith(
                                YafBuildLink.GetLink(ForumPages.forum).Replace("auth.aspx", "default.aspx"),
                                SCRIPTBEGINTAG,
                                SCRIPTENDTAG));
                    }
                }
            }
            else if (YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("error") != null)
            {
                // Return to login page if user cancels social login
                this.Response.Redirect(YafBuildLink.GetLink(ForumPages.login, true));
            }
            else
            {
                // Authorize first
                this.Response.Redirect(facebookAuth.GetAuthorizeUrl(this.Request), true);
            }
        }
예제 #2
0
        /// <summary>
        /// Handles the facebook return.
        /// </summary>
        private void HandleFacebookReturn()
        {
            var facebookAuth = new Facebook();

            if (YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault(paramName: "code") != null)
            {
                var authorizationCode = YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault(paramName: "code");
                var accessToken       = facebookAuth.GetAccessToken(authorizationCode: authorizationCode, request: this.Request);

                if (accessToken.IsNotSet())
                {
                    this.Response.Write(
                        s: string.Format(
                            format: "{2} alert('{0}');window.location.href = '{1}'; {3}",
                            YafContext.Current.Get <ILocalization>().GetText(text: "AUTH_NO_ACCESS_TOKEN"),
                            YafBuildLink.GetLink(page: ForumPages.login).Replace(oldValue: "auth.aspx", newValue: "default.aspx"),
                            ScriptBeginTag,
                            ScriptEndTag));

                    return;
                }

                if (YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault(paramName: "state") != null &&
                    YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault(paramName: "state")
                    == "connectCurrent")
                {
                    string message;

                    try
                    {
                        facebookAuth.ConnectUser(request: this.Request, parameters: accessToken, message: out message);
                    }
                    catch (Exception ex)
                    {
                        YafContext.Current.Get <ILogger>().Error(ex: ex, format: "Error while trying to connect the facebook user");

                        message = ex.Message;
                    }

                    if (message.IsSet())
                    {
                        this.Response.Write(
                            s: string.Format(
                                format: "{2} alert('{0}');window.location.href = '{1}'; {3}",
                                message,
                                YafBuildLink.GetLink(page: ForumPages.forum).Replace(oldValue: "auth.aspx", newValue: "default.aspx"),
                                ScriptBeginTag,
                                ScriptEndTag));
                    }
                    else
                    {
                        YafBuildLink.Redirect(page: ForumPages.forum);
                    }
                }
                else
                {
                    string message;

                    try
                    {
                        facebookAuth.LoginOrCreateUser(request: this.Request, parameters: accessToken, message: out message);
                    }
                    catch (Exception ex)
                    {
                        YafContext.Current.Get <ILogger>()
                        .Error(ex: ex, format: "Error while trying to login or register the facebook user");

                        message = ex.Message;
                    }

                    this.Response.Clear();

                    if (message.IsSet())
                    {
                        this.Response.Write(
                            s: string.Format(
                                format: "{2} alert('{0}');window.location.href = '{1}';window.close(); {3}",
                                message,
                                YafBuildLink.GetLink(page: ForumPages.login).Replace(oldValue: "auth.aspx", newValue: "default.aspx"),
                                ScriptBeginTag,
                                ScriptEndTag));
                    }
                    else
                    {
                        this.Response.Write(
                            s: string.Format(
                                format: "{1} window.location.href = '{0}';window.close(); {2}",
                                arg0: YafBuildLink.GetLink(page: ForumPages.forum).Replace(oldValue: "auth.aspx", newValue: "default.aspx"),
                                arg1: ScriptBeginTag,
                                arg2: ScriptEndTag));
                    }
                }
            }
            else if (YafContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault(paramName: "error") != null)
            {
                // Return to login page if user cancels social login
                this.Response.Redirect(url: YafBuildLink.GetLink(page: ForumPages.login, fullUrl: true));
            }
            else
            {
                // Authorize first
                this.Response.Redirect(url: facebookAuth.GetAuthorizeUrl(request: this.Request), endResponse: true);
            }
        }
예제 #3
0
        /// <summary>
        /// Handles the facebook return.
        /// </summary>
        private void HandleFacebookReturn()
        {
            var facebookAuth = new Facebook();

            if (BoardContext.Current.Get <HttpRequestBase>().QueryString.Exists("code"))
            {
                var authorizationCode = BoardContext.Current.Get <HttpRequestBase>().QueryString
                                        .GetFirstOrDefault("code");
                var accessToken = facebookAuth.GetAccessToken(
                    authorizationCode,
                    this.Request);

                if (accessToken.IsNotSet())
                {
                    BoardContext.Current.Get <HttpResponseBase>().Write(
                        string.Format(
                            "{2} alert('{0}');window.location.href = '{1}'; {3}",
                            BoardContext.Current.Get <ILocalization>().GetText("AUTH_NO_ACCESS_TOKEN"),
                            BuildLink.GetLink(ForumPages.Login).Replace(
                                "auth.aspx",
                                "default.aspx"),
                            ScriptBeginTag,
                            ScriptEndTag));

                    return;
                }

                if (BoardContext.Current.Get <HttpRequestBase>().QueryString.Exists("state") &&
                    BoardContext.Current.Get <HttpRequestBase>().QueryString.GetFirstOrDefault("state")
                    == "connectCurrent")
                {
                    string message;

                    try
                    {
                        facebookAuth.ConnectUser(this.Request, accessToken, out message);
                    }
                    catch (Exception ex)
                    {
                        BoardContext.Current.Get <ILogger>().Error(
                            ex,
                            "Error while trying to connect the facebook user");

                        message = ex.Message;
                    }

                    if (message.IsSet())
                    {
                        BoardContext.Current.Get <HttpResponseBase>().Write(
                            string.Format(
                                "{2} alert('{0}');window.location.href = '{1}'; {3}",
                                message,
                                BuildLink.GetLink(ForumPages.Board).Replace(
                                    "auth.aspx",
                                    "default.aspx"),
                                ScriptBeginTag,
                                ScriptEndTag));
                    }
                    else
                    {
                        BuildLink.Redirect(ForumPages.Board);
                    }
                }
                else
                {
                    string message;

                    try
                    {
                        facebookAuth.LoginOrCreateUser(
                            this.Request,
                            accessToken,
                            out message);
                    }
                    catch (Exception ex)
                    {
                        BoardContext.Current.Get <ILogger>().Error(
                            ex,
                            "Error while trying to login or register the facebook user");

                        message = ex.Message;
                    }

                    BoardContext.Current.Get <HttpResponseBase>().Clear();

                    if (message.IsSet())
                    {
                        BoardContext.Current.Get <HttpResponseBase>().Write(
                            string.Format(
                                "{2} alert('{0}');window.location.href = '{1}';window.close(); {3}",
                                message,
                                BuildLink.GetLink(ForumPages.Login).Replace(
                                    "auth.aspx",
                                    "default.aspx"),
                                ScriptBeginTag,
                                ScriptEndTag));
                    }
                    else
                    {
                        BoardContext.Current.Get <HttpResponseBase>().Write(
                            string.Format(
                                "{1} window.location.href = '{0}';window.close(); {2}",
                                BuildLink.GetLink(ForumPages.Board).Replace(
                                    "auth.aspx",
                                    "default.aspx"),
                                ScriptBeginTag,
                                ScriptEndTag));
                    }
                }
            }
            else if (BoardContext.Current.Get <HttpRequestBase>().QueryString.Exists("error"))
            {
                // Return to login page if user cancels social login
                BoardContext.Current.Get <HttpResponseBase>()
                .Redirect(BuildLink.GetLink(ForumPages.Login, true));
            }
            else
            {
                // Authorize first
                BoardContext.Current.Get <HttpResponseBase>().Redirect(
                    facebookAuth.GetAuthorizeUrl(this.Request),
                    true);
            }
        }