Как создать пользовательский OAuth 2.0 redirect_uri для провайдера Google, для приложения UWP? - PullRequest
0 голосов
/ 21 июня 2019

Я хочу зарегистрировать пользовательский redirect_uri (например, pw.oauth2: / oauth2redirect) в консоли разработчика Google для собственного приложения (это рекомендуемый подход для приложений UWP).В соответствии с https://developers.google.com/identity/protocols/OAuth2InstalledApp#request-parameter-redirect_uri, должна быть опция для выбора «Пользовательской схемы URI (Android, iOS, UWP)», но я вижу только эти опции:

  • Веб-приложение
  • Android
  • Chrome
  • iOS
  • Другое

Выбор другого не позволяет мне указать redirect_uri.

Как ядолжен зарегистрировать пользовательский redirect_uri для приложения UWP?

Если я не регистрирую redirect_uri, я получаю ошибку redirect_uri_mismatch во время процесса авторизации OAuth.

ClientID в этом примере github https://github.com/googlesamples/oauth-apps-for-windows/tree/master/OAuthUniversalApp работает.Похоже, для этого ClientID обязательный зарегистрированный.Но как добиться того же для моих собственных ClientID?

На этот старый вопрос обсуждается нечто подобное, но на него также не было ответа: Google API для UWP не очень хорошо играет с пользовательской схемой перенаправления

РЕДАКТИРОВАТЬ: уточнить.Я использую пример Google, упомянутый выше (https://github.com/googlesamples/oauth-apps-for-windows/tree/master/OAuthUniversalApp). Он работает с жестко закодированным ClientID, предоставленным Google. Я просто не могу заставить его работать с моим собственным ClientID, так как я не вижу способа зарегистрировать свой собственный redirect_uri в их РазработчикеКонсоль.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Понял (после проб и ошибок). В консоли разработчика Google вам необходимо создать приложение для iOS. В свойствах приложения вам нужно указать схему URL (взято из Манифест пакета / Объявления / Протокол / Имя проекта приложения UWP в Visual Studio) в параметре Bundle ID.

Идентификатор AppStore и Team ID могут оставаться пустыми.

Идентификатор пакета действует как схема URL. В моем случае я указал значение pw.oauth2 (это значение в примере Google). Затем я сохранил изменения, установил ClientID приложения iOS в образце Google UWP и обнаружил, что теперь все работает правильно.

Консоль Google предоставляет параметр URL-адреса iOS в свойствах приложения iOS (что-то вроде com.googleusercontent.apps.6284700xxxxx-6tp4d3xxxxx ). Игнорируйте это значение для приложения UWP. Имеет значение только ID пакета.

0 голосов
/ 21 июня 2019

Две мысли:

Вы пытаетесь использовать WebAuthenticationBroker в UWP, чтобы предложить пользователю войти в систему? В этом случае вы не можете настроить свой redirect_uri в UWP ... он должен быть получен из WebAuthenticationBroker.GetCurrentApplicationCallbackUri(), который представляет ваш Package SID ... выглядит примерно так: ms-app://s-1-15-2-1374842229...

и

Убедитесь, что вы правильно кодируете и декодируете свой redirect_uri - он не будет соответствовать, если вы сделаете это неправильно. Без вашего кода трудно сказать, как вы это делаете.

WebUtility.UrlEncode(redirectURI);

...