Index: Src/GoogleApis.Auth.WP/OAuth2/GoogleWebAuthorizationBroker.cs |
=================================================================== |
--- a/Src/GoogleApis.Auth.WP/OAuth2/GoogleWebAuthorizationBroker.cs |
+++ b/Src/GoogleApis.Auth.WP/OAuth2/GoogleWebAuthorizationBroker.cs |
@@ -75,6 +75,23 @@ |
return await AuthorizeAsyncCore(initializer, scopes, user, taskCancellationToken).ConfigureAwait(false); |
} |
+ /// <summary> |
+ /// Asynchronously reauthorizes the user. This method should be called if the users want to authorize after |
+ /// they revoked the token. |
+ /// </summary> |
+ /// <param name="userCredential">The current user credential. Its <see cref="UserCredential.Token"/> will be |
+ /// updated. </param> |
+ /// <param name="taskCancellationToken">Cancellation token to cancel an operation.</param> |
+ public static async Task ReauthorizeAsync(UserCredential userCredential, |
+ CancellationToken taskCancellationToken) |
+ { |
+ var installedApp = new AuthorizationCodeWPInstalledApp(userCredential.Flow); |
+ // Create an authorization code installed app instance and authorize the user. |
+ UserCredential newUserCredential = await installedApp.AuthorizeAsync(userCredential.UderId, |
+ taskCancellationToken).ConfigureAwait(false); |
+ userCredential.Token = newUserCredential.Token; |
+ } |
+ |
/// <summary>The core logic for asynchronously authorizing the specified user.</summary> |
/// <param name="initializer">The authorization code initializer.</param> |
/// <param name="scopes"> |
@@ -83,13 +100,14 @@ |
/// <param name="user">The user to authenticate.</param> |
/// <param name="taskCancellationToken">Cancellation token to cancel an operation.</param> |
/// <returns>User credential.</returns> |
- private static async Task<UserCredential> AuthorizeAsyncCore(AuthorizationCodeFlow.Initializer initializer, |
- IEnumerable<string> scopes, string user, CancellationToken taskCancellationToken) |
+ private static async Task<UserCredential> AuthorizeAsyncCore( |
+ GoogleAuthorizationCodeFlow.Initializer initializer, IEnumerable<string> scopes, string user, |
+ CancellationToken taskCancellationToken) |
{ |
initializer.Scopes = scopes; |
initializer.DataStore = new StorageDataStore(); |
- var installedApp = new AuthorizationCodeWPInstalledApp(initializer); |
+ var installedApp = new AuthorizationCodeWPInstalledApp(new GoogleAuthorizationCodeFlow(initializer)); |
return await installedApp.AuthorizeAsync(user, taskCancellationToken).ConfigureAwait(false); |
} |
} |