/// <summary>Make a call to <see cref="TraktOAuthModule.GetOAuthTokenAsync()"/> to get an OAuth access token using <see cref="AuthorizationCode"/>, <see cref="ClientId"/>, /// <see cref="ClientSecret"/> and <see cref="OAuthRedirectUri"/>, and parse the result into <see cref="CurrentOAuthAccessToken"/></summary> /// <returns><see cref="CurrentOAuthAccessToken"/></returns> public async Task <TraktOAuthAccessToken> GetOAuthAccessToken() { AuthenticationMode = TraktAuthenticationMode.OAuth; var result = await Client.OAuth.GetOAuthTokenAsync(AuthorizationCode, ClientId, ClientSecret, OAuthRedirectUri, TraktOAuthTokenGrantType.AuthorizationCode); CurrentOAuthAccessToken = new TraktOAuthAccessToken { AccessToken = result.AccessToken, AccessTokenExpires = DateTime.Now.AddSeconds(result.ExpiresIn), AccessScope = result.Scope }; return(CurrentOAuthAccessToken); }
/// <summary>Make a call to <see cref="TraktOAuthModule.GetOAuthTokenAsync()"/> to refresh an OAuth access token using <see cref="AuthorizationCode"/>, <see cref="ClientId"/>, /// <see cref="ClientSecret"/> and <see cref="OAuthRedirectUri"/>, and parse the result into <see cref="CurrentOAuthAccessToken"/></summary> /// <returns><see cref="CurrentOAuthAccessToken"/></returns> public async Task <TraktOAuthAccessToken> RefreshOAuthAccessToken() { //TODO: OAuth refresh currently not working - it isn't clear from the docs exactly what values should be passed in. Reported to Trakt staff. AuthenticationMode = TraktAuthenticationMode.OAuth; var result = await Client.OAuth.GetOAuthTokenAsync(CurrentOAuthAccessToken.RefreshToken, ClientId, ClientSecret, OAuthRedirectUri, TraktOAuthTokenGrantType.RefreshToken); CurrentOAuthAccessToken = new TraktOAuthAccessToken { AccessToken = result.AccessToken, AccessTokenExpires = DateTime.Now.AddSeconds(result.ExpiresIn), AccessScope = result.Scope, RefreshToken = result.RefreshToken }; return(CurrentOAuthAccessToken); }
/// <summary> /// Saves the OAuth access token. /// </summary> /// <param name="token">The OAuth access token returned from the server.</param> private void SaveAuthToken(TraktOAuthAccessToken token) { OAuth auth = schedulerDb.OAuth.FirstOrDefault(); if (auth == null) { auth = new OAuth(); schedulerDb.OAuth.Add(auth); } auth.AuthToken = token.AccessToken; auth.RefreshToken = token.RefreshToken; auth.Expires = token.AccessTokenExpires; auth.Scope = token.AccessScope; schedulerDb.SaveChanges(); AuthenticationNeeded = !token.IsValid; }