コード例 #1
0
        public static IServiceCollection AddFacebookLogin(this IServiceCollection services, Action <FacebookLoginOptions> optionsAction = null)
        {
            var fbOptions = new FacebookLoginOptions();

            optionsAction?.Invoke(fbOptions);

            return(services
                   .AddSingleton(fbOptions)
                   .AddScoped <FacebookLoginService>());
        }
コード例 #2
0
 public AccountService(
     IOptions <JwtOptions> jwtOptions,
     IOptions <FacebookLoginOptions> fbLoginOptions,
     IOptions <EmailOptions> emailOptions,
     SignInManager <ApplicationUser> signInManager,
     UserManager <ApplicationUser> userManager,
     IUserRepository userRepository,
     IHttpClientFactory clientFactory,
     IMapper mapper,
     IEmailService emailService,
     INotificationRepository notificationRepository
     )
 {
     _jwtOptions             = jwtOptions.Value;
     _fbLoginOptions         = fbLoginOptions.Value;
     _emailOptions           = emailOptions.Value;
     _signInManager          = signInManager;
     _userManager            = userManager;
     _userRepository         = userRepository;
     _clientFactory          = clientFactory;
     _mapper                 = mapper;
     _emailService           = emailService;
     _notificationRepository = notificationRepository;
 }
コード例 #3
0
        public async Task InvokeAsync(HttpContext context, FacebookLoginService fbService, FacebookLoginOptions fbOptions)
        {
            try
            {
                var code = context.Request.Query["code"].ToString();

                if (string.IsNullOrEmpty(code))
                {
                    throw new ArgumentException("Query parameter 'code' does not exist");
                }

                var accessTokenRequest = new HttpRequestMessage(HttpMethod.Get,
                                                                string.Format("https://graph.facebook.com/v6.0/oauth/access_token?client_id={0}&client_secret={1}&redirect_uri={2}&code={3}",
                                                                              configuration[fbOptions.ConfigurationKeys.AppId],
                                                                              configuration[fbOptions.ConfigurationKeys.AppSecret],
                                                                              UrlEncode(configuration[fbOptions.ConfigurationKeys.RedirectUri]),
                                                                              code
                                                                              ));

                var httpClient          = clientFactory.CreateClient();
                var accessTokenResponse = await httpClient.SendAsyncEx <AccessTokenDto>(accessTokenRequest);

                var fields = string.Join(",", fbOptions.Fields);

                var userDataRequest = new HttpRequestMessage(HttpMethod.Get,
                                                             $"https://graph.facebook.com/me?fields={fields}&access_token={accessTokenResponse.AccessToken}");

                fbService.UserData = await httpClient.SendAsyncEx <UserDataDto>(userDataRequest);
            }
            catch (Exception e)
            {
                fbService.ErrorMessage = e.Message;
            }

            await next(context);
        }