0

Я чувствую, что я делаю что-то неправильно ...WebServer: GoogleWebAuthorizationBroker.AuthorizeAsync

GoogleWebAuthorizationBroker.AuthorizeAsync предполагается открыть новое окно браузера, а затем пользователь может аутентифицировать себя ... НО! Я использую его на WebServer или даже в WorkerRole в облаке Azure, так как технически GoogleWebAuthorizationBroker.AuthorizeAsync может открыть новое окно браузера на клиентской машине?

Это второй вопрос, который я задаю, но теперь это более конкретный вопрос, потому что я чувствую, что что-то пропущу. The first one имеет немного более подробную информацию о том, что я делаю.

ответ

0

Я думаю, что у меня возникают проблемы, которые правильно понимают вашу проблему, я не совсем уверен, что это проблема, которую это швы, это больше вопрос о внутренней работе клиентской библиотеки Googles .net, и в этом случае может просто быть вне темы для Stack, но попробуем это.

У вас есть веб-приложение, для проверки подлинности это просто необходимо, чтобы показать это окно браузера для пользователя

enter image description here

Это делается путем перенаправления их в это окно.

https://accounts.google.com/o/oauth2/auth?client_id={clientid}.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code 

Предполагая, что они нажимают кнопку Accept, аутентификация перенаправляется на ваш веб-сервер, используя URI перенаправления, где вы обрабатываете аутентификацию. Не открывая новое окно браузера на ПК пользователей, он перенаправляет текущую страницу на аутентификацию, а затем обратно на ваш веб-сервер.

Снова у вас возникли проблемы или это просто общее любопытство относительно того, как работает клиентская библиотека?

+0

Спасибо! Это не совсем ответило на мои все вопросы, но теперь я понимаю, что то, что я хочу, возможно, и я просто делаю что-то неправильно .... наконец, я нашел пропавший мир ... когда я использую gapi, мне нужно передать response_type: "code "вместо" токена ". Теперь на сервере я могу обменять код, чтобы получить доступ и обновить токен, и одна из сообщений на вашем веб-сайте поможет мне ее реализовать. Теперь я думаю, как создать экземпляр класса UserCredential, не вызывая GoogleWebAuthorizationBroker.AuthorizeAsync, потому что похоже, что мне не нужно его использовать, но, может быть, я что-то пропустил снова :) –

+0

Я на самом деле никогда не пробовал смешивать gapi и .net клиент. Я хотел бы услышать, если вы заработаете. – DaImTo

+1

Да, у меня это работает, и все выглядит идеально! Я отправляю код авторизации с клиента на сервер, сервер обменивает этот код на access_token + refresh_token, затем создаю экземпляр UserCredentials без использования GoogleWebAuthorizationBroker.AuthorizeAsync, а затем я могу использовать google api. Чтобы получить код авторизации на клиенте, response_type: «код» должен быть отправлен в gapi, и для того, чтобы получить refresh_token на сервере, клиент должен добавить «access_type»: offline to gapi. –

Смежные вопросы