public FacebookClient GetClient(Account account) { var parameters = new OAuthAuthenticationParameters(Provider.SystemName); var identifier = _openAuthenticationService .GetExternalIdentifiersFor(account) .Where(o => o.ProviderSystemName == parameters.ProviderSystemName) .ToList() .FirstOrDefault(); return !string.IsNullOrEmpty(identifier.OAuthAccessToken) ? new FacebookClient(identifier.OAuthAccessToken) : null; }
private AuthorizeState TranslateResponseState(string returnUrl, FacebookOAuthResult oAuthResult) { if (oAuthResult.IsSuccess) { var accessToken = GetAccessToken(oAuthResult.Code); var parameters = new OAuthAuthenticationParameters(Provider.SystemName) { ExternalIdentifier = accessToken, OAuthToken = oAuthResult.Code, OAuthAccessToken = accessToken }; if (_externalAuthenticationSettings.AutoRegisterEnabled) GetClaims(parameters); var result = _authorizer.Authorize(parameters); return new AuthorizeState(returnUrl, result); } var state = new AuthorizeState(returnUrl, OpenAuthenticationStatus.Error); state.AddError(string.Format("Reason: {0}, Description: {1}", oAuthResult.ErrorReason, oAuthResult.ErrorDescription)); return state; }
private void GetClaims(OAuthAuthenticationParameters parameters) { var client = new FacebookClient(parameters.OAuthAccessToken); var me = client.Get("/me"); var claimsTranslator = new FacebookClaimsTranslator(); var claims = claimsTranslator.Translate((IDictionary<string, object>)me); parameters.AddClaim(claims); }