public async Task <AppAccessToken> Handle(GetAppAccessTokenCommand command, CancellationToken cancellationToken = default(CancellationToken)) { AppAccessToken accessToken = null; var accessTokenInDb = context.AppAccessTokens.FirstOrDefault(); if (accessTokenInDb != null) { if (DateTime.Now.Subtract(accessTokenInDb.time_stamp).TotalSeconds > accessTokenInDb.expires_in) { accessToken = await communicator.GetAppAccessTokenAsync(); accessTokenInDb.access_token = accessToken.access_token; accessTokenInDb.expires_in = accessToken.expires_in; accessTokenInDb.time_stamp = accessToken.time_stamp; } else { return(accessTokenInDb); } } else { accessToken = await communicator.GetAppAccessTokenAsync(); context.AppAccessTokens.Add(accessToken); } await context.SaveAsync(); return(accessToken); }
public async Task <UserAccessToken> Handle(GetUserAccessTokenCommand command, CancellationToken cancellationToken = default(CancellationToken)) { var userAccessToken = await communicator.GetUserAccessTokenAsync(command.Code); var tokenInDb = await context.UserAccessTokens.FirstOrDefaultAsync(t => t.openid == userAccessToken.openid); if (tokenInDb == null) { context.UserAccessTokens.Add(userAccessToken); } else { tokenInDb.access_token = userAccessToken.access_token; tokenInDb.expires_in = userAccessToken.expires_in; tokenInDb.refresh_token = userAccessToken.refresh_token; tokenInDb.scope = userAccessToken.scope; } await context.SaveAsync(); return(userAccessToken); }