Wie lege ich return_uri für GoogleWebAuthorizationBroker.AuthorizeAsync fest?

Ich versuche das @ zu benutzGoogle Calendar API in meinem Nicht-MVC .NET-Webanwendung. (Dies scheint ein wichtiger Unterschied zu sein.)

Ich habe versucht, Code von @ zu verwendedieses Beispiel bei Google unddieses Beispiel bei Daimto zusammen mit einigen hilfreichen Hinweisen aus einer Reihe von Verwandte Beiträge hier.

Ich habe die folgende Methode geschrieben:

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
}

Problem ist, wenn die OAuth2-Seite von Google aufgerufen wird,redirect_uri setzt sich fort aufhttp://localhost:<some-random-port>/authorize. Ich habe keine Ahnung, wie ich dies auf etwas anderes einstellen soll, wie in der folgenden Beispiel-URL, die von @ generiert wirAuthorizeAsync:

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

Google antwortet mit einem redirect_uri_mismatch Fehlerseite mit der Meldung:

“Die Umleitungs-URI in der Anfrage:http: // localhost: XXXXX / authorize / stimmte nicht mit einem registrierten Redirect-URI überein. ”

Ich kann nur so viele Redirect-URIs auf der Seite "Console Credentials" meines Google-Entwicklers registrieren. Ich bin nicht geneigt, 65535 Ports zu registrieren, und ich möchte eine andere Seite als @ verwende/authorize auf meiner Seite. Konkret möchte ich während der Entwicklunghttp://localhost:888/Pages/GoogleApiRedirect aber ich habe keine Ahnung, wo ich das einstellen würde, abgesehen von dem, was ich in der Entwicklerkonsole getan habe.

Wie setze ich den Wert von @ expliziredirect_uri? Ich bin auch offen für eine Antwort in der Form "Dieser Ansatz ist völlig falsch."

BEARBEITEN

Nachdem ich in den letzten Tagen damit gespielt habe, habe ich festgestellt, dass ich mithilfe der Client-ID / des Client-Geheimnisses für die native Anwendung und nicht für die Webanwendung zumindest die Webautorisierungsseite von Google aufrufen kann, ohne mich über ein @ zu beschwere redirect_uri_mismatch. Dies ist immer noch nicht akzeptabel, da es immer noch zu @ zurückkehhttp://localhost:<some-random-port>/authorize, auf das meine Webanwendung keinen Einfluss hat.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage