コード例 #1
0
    public async Task <object> Facebook([FromBody] FacebookDto model)
    {
        String fbAppId                = configuration["Facebook:AppId"];
        String fbAppSecret            = configuration["Facebook:AppSecret"];
        var    appAccessTokenResponse = await Client.GetStringAsync($"https://graph.facebook.com/oauth/access_token?client_id={fbAppId}&client_secret={fbAppSecret}&grant_type=client_credentials");

        var appAccessToken = JsonConvert.DeserializeObject <FacebookAppAccessToken>(appAccessTokenResponse);

        var userAccessTokenValidationResponse = await Client.GetStringAsync($"https://graph.facebook.com/debug_token?input_token={model.AccessToken}&access_token={appAccessToken.AccessToken}");

        var userAccessTokenValidation = JsonConvert.DeserializeObject <FacebookUserAccessTokenValidation>(userAccessTokenValidationResponse);

        if (!userAccessTokenValidation.Data.IsValid)
        {
            return(BadRequest("Invalid facebook token."));
        }

        var userInfoResponse = await Client.GetStringAsync($"https://graph.facebook.com/v3.1/me?fields=id,email,first_name,last_name,name,gender,locale,birthday,picture&access_token={model.AccessToken}");

        var userInfo = JsonConvert.DeserializeObject <FacebookUserData>(userInfoResponse);

        var user = await userManager.FindByEmailAsync(userInfo.Email);

        if (user == null)
        {
            var newUser = new User
            {
                FirstName  = userInfo.FirstName,
                LastName   = userInfo.LastName,
                UserName   = userInfo.Email,
                Email      = userInfo.Email,
                FacebookId = userInfo.Id
            };

            var result = await userManager.CreateAsync(newUser, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8));

            if (!result.Succeeded)
            {
                return(BadRequest("Failed to register new facebook user."));
            }

            await signInManager.SignInAsync(newUser, false);
        }

        var localUser = await userManager.FindByNameAsync(userInfo.Email);

        if (localUser == null)
        {
            return(BadRequest("Failed to create local user account."));
        }
        await signInManager.SignInAsync(user, false);

        return(GenerateJwtToken(localUser.Email, localUser));
    }
コード例 #2
0
        public IActionResult FacebookPost([FromBody] FacebookDto facebookdto)
        {
            var user = _mapper.Map <UserDetails>(facebookdto);

            user.Username = facebookdto.Name;
            user.PhotoUrl = "dummy-dp";
            var fbuser = _userService.Create(user);

            return(Ok(new {
                Id = fbuser.UserId,
                Email = fbuser.Email,
                Username = fbuser.Username,
                FirstName = fbuser.FirstName,
                LastName = fbuser.LastName
            }));
        }
コード例 #3
0
        public async Task <string> ValidateUser([FromBody] FacebookDto facebookDto)
        {
            var client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            try
            {
                AppConfig api        = new AppConfig();
                var       stringTask = await client.PostAsync(api.facebookurl + "api/Facebookapi", new StringContent(JsonConvert.SerializeObject(facebookDto), Encoding.UTF8, "application/json"));

                var msg = stringTask.Content.ReadAsStringAsync().Result;
                return(msg);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return(null);
        }