通过 WebView 的 Xamarin oauth
Xamarin oauth through WebView
几天来,我一直在尝试在 Xamarin Forms 应用程序中实施 google OAuth。我有一个非常简单的 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;
}
}
但是在 webview 初始化后我得到了 403: disalloed_useragent
。
最初我通过浏览器 + 邮递员使用 Web 客户端凭据和 OAuth 成功完成。
您需要更改 WebView 控件的用户代理。
遗憾的是,目前不支持此功能,但您可以在此处找到一些解决方法:https://github.com/xamarin/Xamarin.Forms/issues/8432
几天来,我一直在尝试在 Xamarin Forms 应用程序中实施 google OAuth。我有一个非常简单的 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;
}
}
但是在 webview 初始化后我得到了 403: disalloed_useragent
。
最初我通过浏览器 + 邮递员使用 Web 客户端凭据和 OAuth 成功完成。
您需要更改 WebView 控件的用户代理。
遗憾的是,目前不支持此功能,但您可以在此处找到一些解决方法:https://github.com/xamarin/Xamarin.Forms/issues/8432