public static Response CheckUserIsNothAuthorisedByFacebookAnymore(NancyContext context) { long?facebookId = null; try { if (AuthenticatedUserNameHasValue(context)) { facebookId = long.Parse(context.Items[SecurityConventions.AuthenticatedUsernameKey].ToString()); var user = InMemoryUserCache.Get(facebookId.Value); var client = new FacebookClient(user.AccessToken); dynamic me = client.Get("me"); } } catch (FacebookOAuthException) { //If an exception gets thrown the access token is no longer valid RemoveUserFromCache(context, facebookId); return(new Response() { StatusCode = HttpStatusCode.Unauthorized }); } return(context.Response); }
private static void RemoveUserFromCache(NancyContext context, long?facebookId) { context.Items[SecurityConventions.AuthenticatedUsernameKey] = null; if (facebookId.HasValue) { InMemoryUserCache.Remove(facebookId.Value); } }
public void SaveNotNullUserAndGetIt_ItIsReturned() { var userProfile = new UserProfile(1, "", "", "", null); var cache = new InMemoryUserCache(); cache.SaveUser(userProfile); var retrievedUser = cache.TryGetUser(1); Assert.IsNotNull(retrievedUser); }
public MainModule() { this.RequiresAuthentication(); Get["/"] = parameters => { var facebookId = long.Parse(Context.Items[SecurityConventions.AuthenticatedUsernameKey].ToString()); var user = InMemoryUserCache.Get(facebookId); var client = new FacebookClient(user.AccessToken); dynamic me = client.Get("me"); return("<h1>Welcome to Social Democracy! " + me.name + "</h1><p>You have logged in using facebook</p>"); }; }
private void AddAuthenticatedUserToCache(string code, Guid userId) { var oAuthClient = GetFacebookOAuthClient(); dynamic tokenResult = oAuthClient.ExchangeCodeForAccessToken(code); string accessToken = tokenResult.access_token; var facebookClient = new FacebookClient(accessToken); dynamic me = facebookClient.Get("me?fields=id,name"); long facebookId = Convert.ToInt64(me.id); InMemoryUserCache.Add(new FacebookUser { UserId = userId, AccessToken = accessToken, FacebookId = facebookId, Name = (string)me.name, }); }