Como defino return_uri para GoogleWebAuthorizationBroker.AuthorizeAsync?

Estou tentando usar oAPI do Google Agenda no meuAplicativo da Web .NET não MVC. (Essa parece ser uma distinção importante.)

Eu tentei usar o código deeste exemplo no Google eeste exemplo no Daimto, juntamente com algumas dicas úteis de váriosposts relacionados aqui.

Eu escrevi o seguinte método:

public void GetUserCredential( String userName )
{
    String clientId = ConfigurationManager.AppSettings[ "Google.ClientId" ];            //From Google Developer console https://console.developers.google.com
    String clientSecret = ConfigurationManager.AppSettings[ "Google.ClientSecret" ];    //From Google Developer console https://console.developers.google.com
    String[] scopes = new string[] {
            Google.Apis.Calendar.v3.CalendarService.Scope.Calendar          
    };

    // here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
    UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync( new ClientSecrets
    {
        ClientId = clientId,
        ClientSecret = clientSecret             
    }, scopes, userName, CancellationToken.None, new FileDataStore( "c:\\temp" ) ).Result;

    // TODO: Replace FileDataStore with DatabaseDataStore
}

O problema é que, quando a página OAuth2 do Google é chamada,redirect_uri continua se preparando parahttp://localhost:<some-random-port>/authorize. Não faço ideia de como definir isso para outra coisa, como no exemplo a seguir URL gerado porAuthorizeAsync:

https://accounts.google.com/o/oauth2/auth?access_type=offline
    &response_type=code
    &client_id=********.apps.googleusercontent.com
    &redirect_uri=http:%2F%2Flocalhost:40839%2Fauthorize%2F
    &scope=https:%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar

O Google responde com umredirect_uri_mismatch página de erro com a mensagem:

“O URI de redirecionamento na solicitação:http: // localhost: XXXXX / autorize / não correspondeu a um URI de redirecionamento registrado "

Só posso registrar tantos URIs de redirecionamento na página Credenciais do console do desenvolvedor do Google. Não estou inclinado a registrar 65535 portas e quero usar uma página que não seja/authorize no meu site Especificamente, quero usar, durante o desenvolvimento,http://localhost:888/Pages/GoogleApiRedirect mas não tenho idéia de onde eu definiria isso, além do que fiz no console do desenvolvedor.

Como defino explicitamente o valor deredirect_uri? Também estou aberto a uma resposta na forma "Essa abordagem está completamente errada".

EDITAR:

Depois de brincar com isso no dia anterior, descobri que, usando o ID do cliente / segredo do cliente para o aplicativo nativo em vez do aplicativo da web, posso pelo menos acessar a página de autorização da web do Google sem queixar-se de umaredirect_uri_mismatch. Isso ainda é inaceitável, porque ainda retorna aohttp://localhost:<some-random-port>/authorize, que está fora do controle do meu aplicativo da web.

questionAnswers(1)

yourAnswerToTheQuestion