public async Task <AuthTokenResult> Register(AuthCodeAndCallbackUri codeAndCallbackUri) { var response = await spotify.InitialRequest(codeAndCallbackUri); if (!string.IsNullOrEmpty(response.Error)) { return(Error($"{response.Error}: {response.ErrorDescription}")); } var dbUser = new User { Code = codeAndCallbackUri.Code, AccessToken = response.AccessToken, AccessTokenExpiresInSec = response.ExpiresInSec, AccessTokenAcquiredAt = response.AcquiredAt, RefreshToken = response.RefreshToken }; if (!await db.Register(dbUser)) { return(Error("User most likely already registered.")); } return(new AuthTokenResult { Token = new AuthToken { AccessToken = response.AccessToken, Acquired = response.AcquiredAt.ToUniversalTime(), ExpiresInSec = response.ExpiresInSec } }); }
public async Task <InitialResponse> InitialRequest(AuthCodeAndCallbackUri codeAndCallbackUri) { return(await Request <InitialResponse>(new Dictionary <string, string> { { "grant_type", "authorization_code" }, { "code", codeAndCallbackUri.Code }, { "redirect_uri", codeAndCallbackUri.CallbackUri } })); }
public async Task <ActionResult <AuthTokenResult> > Register([FromBody] AuthCodeAndCallbackUri codeAndCallbackUri) { return(await Execute(() => users.Register(codeAndCallbackUri))); }