Xamarin oauth через WebView

Я пытался реализовать Google OAuth в приложении Xamarin Forms в течение нескольких дней. У меня есть довольно простой XAML код

<?xml version="1.0" encoding="utf-8" ?>

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:Google.ViewModels"
         x:Class="Google.MainPage">
<ContentPage.BindingContext>
    <local:MainPageViewModel/>
</ContentPage.BindingContext>
<StackLayout>
    <WebView Source="{Binding OAuthRequestUrl}" 
             VerticalOptions="FillAndExpand" 
             HorizontalOptions="FillAndExpand"/>
</StackLayout>

И ViewModel :

public string OAuthRequestUrl 
{ 
    get 
    {
        string oauthReuest = string.Format(
            "https://accounts.google.com/o/oauth2/v2/auth?client_id={0}&redirect_uri={1}&response_type={2}&scope={3}", 
            clientId, 
            redirectUrl, 
            responceType, 
            scope);
        return oauthReuest;
    } 
}

Но после инициализации веб-просмотра я получил 403: disalloed_useragent. Первоначально я успешно использовал учетные данные веб-клиента и OAuth через браузер + почтальон.

Xamarin oauth через WebView

Получение данных из формы с помощью JavaScript - краткое руководство
Получение данных из формы с помощью JavaScript - краткое руководство
Получить данные из формы с помощью JS очень просто: вы запрашиваете элемент формы, передаете его конструктору new FormData() и, наконец, получаете...
Пользовательские правила валидации в Laravel
Пользовательские правила валидации в Laravel
Если вы хотите создать свое собственное правило валидации, Laravel предоставляет возможность сделать это. Создайте правило с помощью следующей...
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
0
0
16
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо изменить пользовательский агент элемента управления WebView.

К сожалению, в настоящее время это не поддерживается, но здесь вы найдете некоторые обходные пути: https://github.com/xamarin/Xamarin.Forms/issues/8432.

Но похоже на какой-то костыль. Я не хочу изобретать велосипед. Есть ли нормальный способ использовать Xamarin + OAuth?

Сергей 10.04.2022 18:55

На самом деле это не костыль, а побочный эффект использования элемента управления WebView в данном контексте. Можно использовать OAuth и другими способами, такими как задокументировано здесь, но я лично не пробовал ни один из них.

EddieLotter 10.04.2022 20:37

Другие вопросы по теме