Xamarin.Forms WebAuthenticator и Google

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

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

Поэтому я попытался использовать Xamarin.Forms Web Authenticator для получения информации календаря. В документации не упоминается, как пройти аутентификацию в Google, поэтому я попробовал это

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

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

скриншот

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


person Mouse On Mars    schedule 22.11.2020    source источник
comment
Попробуйте использовать https://accounts.google.com/o/oauth2/v2/auth в качестве первого параметра.   -  person Jack Hua    schedule 23.11.2020
comment
Я все еще получаю то же сообщение об ошибке (ошибка 400, неверный запрос)   -  person Mouse On Mars    schedule 23.11.2020
comment
То же самое на самом деле верно, если я попаду в эту конечную точку в своем браузере.   -  person Mouse On Mars    schedule 23.11.2020
comment
Проблема должна быть вызвана URL-адресом перенаправления.   -  person Jack Hua    schedule 24.11.2020
comment
Если я буду следовать документации Web Authenticator, URL-адрес перенаправления должен быть именем приложения (я предполагаю, что имя пакета указано в файле манифеста), за которым следует ://. Я пытался изменить этот URL-адрес, но все равно получаю ту же ошибку. Я реализовал класс WebAuthenticatorCallbackActivity, как это предлагается в документации.   -  person Mouse On Mars    schedule 24.11.2020
comment
Ознакомьтесь с информацией в этой ветке.   -  person Jack Hua    schedule 24.11.2020
comment
Таким образом, интерпретация последнего комментария в треде возможна только теоретически использовать WebAuthenticator, если у вас нет собственного бэкенда. Это верно?   -  person Mouse On Mars    schedule 24.11.2020
comment
Нет, я так не думаю. Серверная часть не будет ограничивать вас в использовании WebAuthenticator.   -  person Jack Hua    schedule 25.11.2020


Ответы (1)


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

person Mouse On Mars    schedule 08.12.2020