コード例 #1
0
        /// <summary>
        /// Intercepts the authorization uri response and gets the authorization code.
        /// </summary>
        /// <param name="authorizationUri">Authorization uri.</param>
        /// <param name="redirectUri">Redirect uri.</param>
        /// <param name="cancellationToken">Cancellation token.</param>
        /// <returns>Authorization code.</returns>
        private async Task <Uri> InterceptAuthorizationUriAsync(
            Uri authorizationUri,
            Uri redirectUri,
            CancellationToken cancellationToken)
        {
            Func <Uri, Task> defaultBrowserAction = (Uri u) =>
            {
                PlatformProxyShared.StartDefaultOsBrowser(u.AbsoluteUri);
                return(Task.CompletedTask);
            };

            Func <Uri, Task> openBrowserAction = defaultBrowserAction;

            cancellationToken.ThrowIfCancellationRequested();
            await openBrowserAction(authorizationUri).ConfigureAwait(false);

            cancellationToken.ThrowIfCancellationRequested();
            return(await this.uriInterceptor.ListenToSingleRequestAndRespondAsync(
                       redirectUri.Port,
                       this.GetResponseMessage,
                       cancellationToken)
                   .ConfigureAwait(false));
        }
 public override Task StartDefaultOsBrowserAsync(string url)
 {
     PlatformProxyShared.StartDefaultOsBrowser(url);
     return(Task.FromResult(0));
 }