Facebook.CanvasAuthContext.Authenticate C# (CSharp) Method

Authenticate() public method

Authenticates current request. Returns true if the request is authenticated and an instance of Session is set; otherwise false.
is null.
public Authenticate ( [ context ) : bool
context [ the current request context information.
return bool
        public bool Authenticate([NotNull] HttpContext context)
        {
            if (context == null)
                throw FacebookApi.Nre("context");

            bool saveSession = true;
            HttpRequest req = context.Request;
            Session session = null;
            // try loading session from signed_request
            var sr = GetSignedRequest(req.QueryString);
            if (sr != null) // sig is good, use the signedRequest
                session = ToFacebookSession(sr);

            // // try to load unsigned session
            string reqSession = req.QueryString["session"];
            if (session == null && !String.IsNullOrEmpty(reqSession))
                session = ValidateSession(JsonObject.CreateFromString(reqSession, Culture));

            ISessionStorage ss = SessionStorage;
            if (session == null && ss != null)
            {
                session = ss.Session;
                if (session != null
                    && !ss.IsSecure
                    && session.Signature != GenerateSignature(session.ToJsonObject()))
                {
                    session = null;
                }

                saveSession = session == null;
            }

            _fbSession = session;

            if (ss != null && saveSession)
                ss.Session = _fbSession;

            return _fbSession != null;
        }

Usage Example

Esempio n. 1
0
        void OnEnter(HttpContext context)
        {
            if (context.Session == null || !context.Request.Url.AbsolutePath.Contains("/Canvas"))
                return;

            // the following browsers has 'Accept cookie from site I visit settings'. we need to make them store cookie.
            HttpBrowserCapabilities br = context.Request.Browser;
            bool forceLogin = br.IsBrowser("opera") || (br.IsBrowser("safari") && !br.IsBrowser("googlechrome"));

            forceLogin = forceLogin && context.Session["after_login"] == null;

            var util = new CanvasAuthContext(this)
            {
                Culture = CultureInfo.CurrentCulture,
                ExProcessor = ex => Debug.Write(ex),
            };

            util.SessionStorage = new CookieSessionStore(context, util);

            if (util.Authenticate(context) && !forceLogin)
            {
                context.User = new GenericPrincipal(new Identity(util), null);
                var step = context.Session["after_login"] as int?;

                if (!step.HasValue || step.Value != 0) return;

                context.Session["after_login"] = 1;
                CanvasAuthContext.RedirectFromIFrame(context, util.ResolveCanvasPageUrl(context.Request.AppRelativeCurrentExecutionFilePath));
            }
            else if (!(context.Handler is IClientAuth))
            {
                context.Session["after_login"] = 0;
                var @params = new Dictionary<string, string> { { "req_perms", "user_birthday" } };
                CanvasAuthContext.RedirectFromIFrame(context, util.GetLoginUrl(context.Request.Url, @params));
                return;
            }
        }