Xamarin.Формирует WebAuthenticator и Google

#xamarin.forms #google-authentication #xamarin.essentials

#xamarin.forms #google-аутентификация #xamarin.essentials

Вопрос:

Я уже некоторое время пытаюсь получить информацию о календаре Google от пользователя Google в Xamarin.Формы.

Я начал свой путь с использования Xamarin.Auth но я не смог преодолеть проблему, из-за которой после входа в систему пользовательская вкладка в моем приложении для Android не закрывалась. Похоже, это постоянная проблема уже много лет, и несколько человек предложили хаки, чтобы обойти эту проблему. Я отказался от Xamarin.Аутентификация на этом этапе

Итак, я попытался использовать Xamarin.Формирует веб-аутентификатор для получения информации о календаре. В документации не упоминается, как пройти аутентификацию с помощью Google, поэтому я попробовал это

 var authResult = await WebAuthenticator.AuthenticateAsync(
                new Uri("https://accounts.google.com/o/oauth2/auth"), // auth url
                new Uri("packageNameOfMyApp://");        // redirect url
 

Я получаю ошибку недопустимого запроса

скриншот

Как мне выбрать первый параметр AuthenticateAsync для правильной аутентификации в Google? Должен ли я каким-то образом кодировать идентификатор клиента из моего приложения, который я получил после настройки входа в приложение через консоль разработчика Google?

Комментарии:

1. Попробуйте использовать https://accounts.google.com/o/oauth2/v2/auth в качестве первого параметра.

2. Я все еще получаю то же сообщение об ошибке (ошибка 400 недопустимый запрос)

3. То же самое на самом деле верно, если я нажму на эту конечную точку своим браузером

4. Проблема должна быть вызвана URL-адресом перенаправления.

5. Если я следую документации веб-аутентификатора, URL-адресом перенаправления должно быть имя приложения (я предполагаю, что имя пакета, указанное в файле манифеста), за которым следует:// Я попытался изменить этот URL-адрес, но все равно получаю ту же ошибку. Я реализовал класс WebAuthenticatorCallbackActivity, как предложено в документации

Ответ №1:

Невозможно использовать WebAuthenticator с Google. Google требует, чтобы для проверки подлинности использовался веб-браузер, и не разрешает вашему приложению проходить проверку подлинности самостоятельно. По той же причине подход, при котором вы используете WebView в своем приложении для перехода на сайт аутентификации Google, завершится неудачей