Я пытался реализовать 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 через браузер + почтальон.
Вам необходимо изменить пользовательский агент элемента управления WebView.
К сожалению, в настоящее время это не поддерживается, но здесь вы найдете некоторые обходные пути: https://github.com/xamarin/Xamarin.Forms/issues/8432.
На самом деле это не костыль, а побочный эффект использования элемента управления WebView в данном контексте. Можно использовать OAuth и другими способами, такими как задокументировано здесь, но я лично не пробовал ни один из них.
Но похоже на какой-то костыль. Я не хочу изобретать велосипед. Есть ли нормальный способ использовать Xamarin + OAuth?