Как установить return_uri для GoogleWebAuthorizationBroker.AuthorizeAsync?
Я пытаюсь использоватьAPI Календаря Google в моемВеб-приложение не-MVC .NET, (Похоже, это важное различие.)
Я пытался использовать код изэтот пример в Google иэтот пример в Daimto вместе с некоторыми полезными советами от рядапохожие посты здесь.
Я написал следующий метод:
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
}
Проблема в том, что при вызове страницы Google OAuth2redirect_uri
продолжает настраиваться наhttp://localhost:<some-random-port>/authorize
, Я понятия не имею, как установить это на что-то другое, как в следующем примере URL, сгенерированныйAuthorizeAsync
:
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 отвечает сredirect_uri_mismatch Страница ошибки с сообщением:
«URI перенаправления в запросе:HTTP: // локальный: XXXXX / авторизированным / не соответствует зарегистрированному URI перенаправления »
Я могу зарегистрировать только такое количество URI перенаправления на странице учетных данных консоли разработчика Google. Я не склонен регистрировать 65535 портов и хочу использовать страницу, отличную от/authorize
на моем сайте. В частности, я хочу использовать во время разработки,http://localhost:888/Pages/GoogleApiRedirect
но не имею ни малейшего представления о том, где бы я это установил, кроме того, что я сделал в консоли разработчика.
Как мне явно установить значениеredirect_uri
? Я также открыт для ответа в форме «Этот подход совершенно неверен».
РЕДАКТИРОВАТЬ:
Поиграв с этим в течение последнего дня, я обнаружил, что, используя идентификатор клиента / секрет клиента для собственного приложения, а не для веб-приложения, я могу, по крайней мере, попасть на страницу веб-авторизации Google, не жалуясь наredirect_uri_mismatch, Это все еще неприемлемо, потому что все еще возвращается кhttp://localhost:<some-random-port>/authorize
, который находится вне контроля моего веб-приложения.