private void DoFacebookLogin(HttpContext context, string returnUrl)
        {
            var client = new FacebookClient
            {
                ClientIdentifier = ConfigurationManager.AppSettings["facebookAppID"],
                ClientSecret     = ConfigurationManager.AppSettings["facebookAppSecret"],
            };
            IAuthorizationState authorization = client.ProcessUserAuthorization(null);

            if (authorization == null)
            {
                // Kick off authorization request
                var scope = new List <string>()
                {
                    "email,user_about_me",
                };
                client.RequestUserAuthorization(scope, null, null);
            }
            else
            {
                var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
                using (var response = request.GetResponse())
                {
                    if (response != null)
                    {
                        using (var responseStream = response.GetResponseStream())
                        {
                            var graph   = FacebookGraph.Deserialize(responseStream);
                            var profile = UniversalProfile.ProfileFromFacebook(graph);
                            RedirectToReturnUrl(context, returnUrl, profile);
                        }
                    }
                }
            }
        }
예제 #2
0
 protected void Page_Load(object sender, EventArgs e)
 {
     this.RegisterAsyncTask(
         new PageAsyncTask(
             async ct => {
         IAuthorizationState authorization =
             await client.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), ct);
         if (authorization == null)
         {
             // Kick off authorization request
             var request =
                 await client.PrepareRequestUserAuthorizationAsync(cancellationToken: ct);
             await request.SendAsync(new HttpContextWrapper(Context), ct);
             this.Context.Response.End();
         }
         else
         {
             var request =
                 WebRequest.Create(
                     "https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
             using (var response = request.GetResponse()) {
                 using (var responseStream = response.GetResponseStream()) {
                     var graph           = FacebookGraph.Deserialize(responseStream);
                     this.nameLabel.Text = HttpUtility.HtmlEncode(graph.Name);
                 }
             }
         }
     }));
 }
예제 #3
0
        public bool FacebookAuthorization(out FacebookGraph fbUser)
        {
            IAuthorizationState authorization = client.ProcessUserAuthorization();

            if (authorization == null)
            {
                client.RequestUserAuthorization();
            }
            else
            {
                try
                {
                    var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
                    using (var response = request.GetResponse())
                    {
                        using (var responseStream = response.GetResponseStream())
                        {
                            fbUser = FacebookGraph.Deserialize(responseStream);

                            return(true);
                        }
                    }
                }
                catch (Exception ex)
                {
                    fbUser = null;
                    return(false);
                }
            }

            fbUser = null;
            return(false);
        }
예제 #4
0
        public ActionResult Login()
        {
            // COMMENT THESE TWO LINES AND MODIFY CConstants
            // with your Facebook AppId and AppSecret Keys
            Session[CConstants.SESSION_ADMNLOGGED] = true;

            return(RedirectToAction("Index", "Home", new { Area = "Admn" }));

            IAuthorizationState authorization = client.ProcessUserAuthorization();

            if (authorization == null)
            {
                // start authorization request
                // request goes to facebook to request accesstoken
                client.RequestUserAuthorization(new String[] { "email" });
            }
            else
            {
                if (null != authorization.AccessToken)
                {
                    // use that accesstoken to request information
                    // from the user's profile
                    var request = WebRequest.Create(
                        String.Format(
                            "https://graph.facebook.com/me?access_token={0}",
                            Uri.EscapeDataString(authorization.AccessToken))
                        );

                    using (var response = request.GetResponse())
                    {
                        using (var responseStream = response.GetResponseStream())
                        {
                            var graph = FacebookGraph.Deserialize(responseStream);

                            string myUserName = graph.Name;
                            string myEmail    = graph.Email;

                            // use the data in the graph object to authorise the user
                            if (
                                !String.IsNullOrEmpty(myEmail)

                                &&

                                myEmail.Equals(
                                    CConstants.ADMINISTRATOR, StringComparison.OrdinalIgnoreCase))
                            {
                                Session[CConstants.SESSION_ADMNLOGGED] = true;

                                return(RedirectToAction("Index", "Home", new { Area = "Admn" }));
                            }
                        }
                    }
                }
            }

            return(Content("Authorization Failed"));
        }
        public LoginProfile ProcessAuthoriztion(HttpContext context, IDictionary <string, string> @params)
        {
            var builder = new UriBuilder(context.Request.GetUrlRewriter())
            {
                Query = "p=" + context.Request["p"]
            };
            var oauth = new FacebookOAuthClient
            {
                AppId       = KeyStorage.Get("facebookAppID"),
                AppSecret   = KeyStorage.Get("facebookAppSecret"),
                RedirectUri = builder.Uri
            };
            FacebookOAuthResult result;

            if (FacebookOAuthResult.TryParse(context.Request.GetUrlRewriter(), out result))
            {
                if (result.IsSuccess)
                {
                    var accessToken = (Facebook.JsonObject)oauth.ExchangeCodeForAccessToken(result.Code);
                    var request     = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString((string)accessToken["access_token"]));
                    using (var response = request.GetResponse())
                    {
                        using (var responseStream = response.GetResponseStream())
                        {
                            var graph   = FacebookGraph.Deserialize(responseStream);
                            var profile = ProfileFromFacebook(graph);
                            return(profile);
                        }
                    }
                }
                return(LoginProfile.FromError(new Exception(result.ErrorReason)));
            }
            //Maybe we didn't query
            var extendedPermissions = new[] { "email", "user_about_me" };
            var parameters          = new Dictionary <string, object>
            {
                { "display", "popup" }
            };

            if (extendedPermissions.Length > 0)
            {
                var scope = new StringBuilder();
                scope.Append(string.Join(",", extendedPermissions));
                parameters["scope"] = scope.ToString();
            }
            var loginUrl = oauth.GetLoginUrl(parameters);

            context.Response.Redirect(loginUrl.ToString());
            return(LoginProfile.FromError(new Exception("Failed to login with facebook")));
        }
        private void HandleFacebookResponse()
        {
            IAuthorizationState authorization = FbClient.ProcessUserAuthorization();

            if (authorization != null)
            {
                var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
                using (var response = request.GetResponse())
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        var graph = FacebookGraph.Deserialize(responseStream);
                        AuthenticatedUser(graph.FirstName, graph.LastName, "", graph.Id.ToString(CultureInfo.CurrentCulture), "Facebook");
                    }
                }
            }
        }
예제 #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            IAuthorizationState authorization = client.ProcessUserAuthorization();

            if (authorization == null)
            {
                // Kick off authorization request
                client.RequestUserAuthorization();
            }
            else
            {
                var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
                using (var response = request.GetResponse()) {
                    using (var responseStream = response.GetResponseStream()) {
                        var graph = FacebookGraph.Deserialize(responseStream);
                        this.nameLabel.Text = HttpUtility.HtmlEncode(graph.Name);
                    }
                }
            }
        }
예제 #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            IAuthorizationState authorization = client.ProcessUserAuthorization();

            if (authorization == null)
            {
                // Kick off authorization request
                client.RequestUserAuthorization();
            }
            else
            {
                var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
                using (var response = request.GetResponse()) {
                    using (var responseStream = response.GetResponseStream()) {
                        var graph = FacebookGraph.Deserialize(responseStream);

                        Response.RedirectWithQueryString(PageFlowExtensions.GetDefaultPageUrl().AbsoluteUri);
                    }
                }
            }
        }
예제 #9
0
        public LoginProfile ProcessAuthoriztion(HttpContext context, IDictionary<string, string> @params)
        {
            var builder = new UriBuilder(context.Request.GetUrlRewriter()) {Query = "p=" + context.Request["p"]};
            var oauth = new FacebookOAuthClient
            {
                AppId = KeyStorage.Get("facebookAppID"),
                AppSecret = KeyStorage.Get("facebookAppSecret"),
                RedirectUri = builder.Uri
            };
            FacebookOAuthResult result;
            if (FacebookOAuthResult.TryParse(context.Request.GetUrlRewriter(), out result))
            {
                if (result.IsSuccess)
                {
                    var accessToken = (Facebook.JsonObject)oauth.ExchangeCodeForAccessToken(result.Code);
                    var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString((string)accessToken["access_token"]));
                    using (var response = request.GetResponse())
                    {
                        using (var responseStream = response.GetResponseStream())
                        {
                            var graph = FacebookGraph.Deserialize(responseStream);
                            var profile = ProfileFromFacebook(graph);
                            return profile;
                        }
                    }
                }
                return LoginProfile.FromError(new Exception(result.ErrorReason));
            }
            //Maybe we didn't query
            var extendedPermissions = new[] { "email", "user_about_me" };
            var parameters = new Dictionary<string, object>
                                 {
                                     { "display", "popup" }
                                 };

            if (extendedPermissions.Length > 0)
            {
                var scope = new StringBuilder();
                scope.Append(string.Join(",", extendedPermissions));
                parameters["scope"] = scope.ToString();
            }
            var loginUrl = oauth.GetLoginUrl(parameters);
            context.Response.Redirect(loginUrl.ToString());
            return LoginProfile.FromError(new Exception("Failed to login with facebook"));




            //var client = new FacebookClient
            //                 {
            //                     ClientIdentifier = KeyStorage.Get("facebookAppID"),
            //                     ClientSecret = KeyStorage.Get("facebookAppSecret"),
            //                 };
            //try
            //{
            //    IAuthorizationState authorization = client.ProcessUserAuthorization(new HttpRequestInfo(context.Request));
            //    if (authorization == null)
            //    {
            //        // Kick off authorization request
            //        var scope = new List<string>()
            //                    {
            //                        "email,user_about_me",
            //                    };
            //        client.RequestUserAuthorization(scope, null, null);
            //    }
            //    else
            //    {
            //        var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
            //        using (var response = request.GetResponse())
            //        {
            //            if (response != null)
            //                using (var responseStream = response.GetResponseStream())
            //                {
            //                    var graph = FacebookGraph.Deserialize(responseStream);
            //                    var profile = ProfileFromFacebook(graph);
            //                    return profile;
            //                }
            //        }
            //    }
            //}
            //catch (ProtocolException e)
            //{
            //    if (e.InnerException is WebException)
            //    {
            //        //Read stream
            //        var responce =
            //            new StreamReader((e.InnerException as WebException).Response.GetResponseStream()).ReadToEnd();
            //    }
            //    throw;
            //}

        }