Exemplo n.º 1
0
        public async Task <HttpResponseMessage> GetFacebookLogin(string accessToken)
        {
            FacebookUserViewModel fbUser = null;
            var path     = "https://graph.facebook.com/me?access_token=" + accessToken;
            var client   = new HttpClient();
            var uri      = new Uri(path);
            var response = await client.GetAsync(uri);

            if (!response.IsSuccessStatusCode)
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized));
            }

            var content = await response.Content.ReadAsStringAsync();

            fbUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserViewModel>(content);
            var fbUserId = long.Parse(fbUser.ID);

            var user = DataContext.User.FirstOrDefault(x => x.FacebookId == fbUserId);

            if (user == null)
            {
                var papUser = new User
                {
                    Username   = String.Format("{0} {1}", fbUser.FirstName, fbUser.LastName),
                    Email      = String.IsNullOrEmpty(fbUser.Email) ? null : fbUser.Email,
                    FacebookId = long.Parse(fbUser.ID),
                    IsOnline   = true
                };
                DataContext.User.Add(papUser);
                DataContext.Commit();
                var accountModel = new AccountModel
                {
                    UserId    = papUser.Id,
                    Username  = papUser.Username,
                    OpenGames = new OpenGamesModel()
                };
                return(Request.CreateResponse(HttpStatusCode.Created, accountModel));
            }
            else
            {
                var guesses       = DataContext.Guess.Where(x => x.NextUser.Id == user.Id && !x.Complete);
                var openGameModel = PopulateOpenGamesModel(guesses);

                var accountModel = new AccountModel
                {
                    UserId    = user.Id,
                    Username  = user.Username,
                    OpenGames = openGameModel
                };

                return(Request.CreateResponse(HttpStatusCode.OK, accountModel));
            }
        }
Exemplo n.º 2
0
        private async Task <FacebookUserViewModel> VerifyFacebookAccessToken(string accessToken)
        {
            FacebookUserViewModel fbUser = null;
            var path     = "https://graph.facebook.com/me?fields=id,name,email&access_token=" + accessToken;
            var client   = new HttpClient();
            var uri      = new Uri(path);
            var response = await client.GetAsync(uri);

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                fbUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserViewModel>(content);
            }

            return(fbUser);
        }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public async Task <FacebookUserViewModel> VerifyFacebookAccessToken(string accessToken)
        {
            var fbUser = new FacebookUserViewModel();
            var path   =
                $"https://graph.facebook.com/v2.12/me?access_token={accessToken}&fields=id,email,first_name,last_name";
            var client = new HttpClient();
            var uri    = new HttpRequestMessage();

            uri.RequestUri = new Uri(path);
            var response = await client.SendAsync(uri);

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                fbUser = JsonConvert.DeserializeObject <FacebookUserViewModel>(content);
            }

            return(fbUser);
        }
Exemplo n.º 4
0
        public async Task <IHttpActionResult> CreateFacebookUser(FacebookUserViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var user = new User
            {
                Email      = model.Email,
                FacebookId = model.FacebookId,
                Name       = model.Name,
                PictureUrl = model.PictureUrl,
                Phone      = model.Phone
            };

            user = await _userService.UpdateOrCreateAsync(user);

            return(Ok(user));
        }