Xamarin 表单 Google 身份验证,错误:disallowed_useragent

Posted

技术标签:

【中文标题】Xamarin 表单 Google 身份验证,错误:disallowed_useragent【英文标题】:Xamarin Forms Google Authenticateion, Error: disallowed_useragent 【发布时间】:2018-01-26 18:43:53 【问题描述】:

目前我正在开发 Xamarin Forms 应用程序并添加了 Google 身份验证。 这是我的 PCL 代码:

var 验证器 = 新 OAuth2Authenticator( 客户标识, 空值, 常量.范围, 新的 Uri(Constants.AuthorizeUrl), 新的 Uri(redirectUri), 新的 Uri(Constants.AccessTokenUrl), 空值, 真的); 身份验证器.Completed += this.OnAuthCompleted; 验证器.Error += this.OnAuthError; AuthenticationState.Authenticator = 身份验证器; var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter(); presenter.Login(authenticator);

我正在使用最新版本的Xamarin.Auth,即1.5.0.3 这是我收到的:Screenshot

我浏览了许多文章和代码示例,但看起来谷歌可能再次更新了他们的身份验证。 Link 1、Link 2、Link 3、Link 4。 Xamarin.Forms 示例官方页面上的事件无效且无法正常工作Link 5。

我检查了几个代码示例,但同样没有成功,Sample 1 和多个示例here。我下载了源代码并尝试使用它,期望它可以工作,但它们也失败了。

您是否有针对此问题的解决方案或任何文章,这是最新的并且您知道它有效。代码示例也会很棒。

提前致谢!

【问题讨论】:

看起来像是 Genymotion 模拟器,是否通过 Play 商店安装了 Chrome? 我没有为 genymotion 安装任何额外的东西。 prntscr.com/g9ye5c prntscr.com/g9yei5 默认有google,但我可以试试不安装chrome。 【参考方案1】:

android 上,出于安全原因,Google 要求现在使用 Chrome Custom Tabs 而不是 WebView

Modernizing OAuth interactions in Native Apps for Better Usability and Security

如果您运行的模拟器(或设备)没有安装 Chrome(从 OEM 或通过 Play 商店预安装),那么Xamarin.Auth 将默认使用WebView。这将在世界某些地区(即设备 OEM 可能未预装 Chrome 的中国)被 Google 接受,否则 Google 将通过 disallowed_useragent 错误拒绝 WebView 客户端。

如果您正在运行 GenyMotion 模拟器,请通过 Play 商店安装 Chrome。如果您没有安装 Play 商店,请安装 GApps(通过http://opengapps.org)

【讨论】:

以上是关于Xamarin 表单 Google 身份验证,错误:disallowed_useragent的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Http 401 错误,但在邮递员中工作,而不是在 xamarin 表单中工作

Xamarin.Auth OAuth Google API,用于Android的用户身份验证

我们如何在 Xamarin 表单中删除/自定义 Azure AD B2C 身份验证 webview 页面标题栏?

从Xamarin Forms请求Web API中的JWT时获取错误请求

无法使用 Xamarin.Forms WebView 进行 Dropbox 身份验证

如何在 Xamarin 中处理 iOS 生物识别身份验证中的错误情况?