在基于Android的嵌入式设备上使用Google OAuth 2

在基于Android的嵌入式设备上使用Google OAuth 2,android,oauth,oauth-2.0,google-oauth,Android,Oauth,Oauth 2.0,Google Oauth,我们有一个基于Android的嵌入式设备应用程序,它使用WebView,在它里面我们使用Google OAuth 2登录到该应用程序。不幸的是,我们有很多限制: 该设备没有安装谷歌服务,因此可能没有任何服务可以工作(或者没有谷歌服务,任何一个都可以工作?) 我们不能仅仅调用Android浏览器进行登录,因为它会显示地址栏,这将允许用户在互联网上冲浪,这是我们不允许的 我们无法完全控制设备上安装的软件:无法安装谷歌服务、更新Android版本、安装谷歌Chrome等等,我们只能更新我们的应用程序

我们有一个基于Android的嵌入式设备应用程序,它使用WebView,在它里面我们使用Google OAuth 2登录到该应用程序。不幸的是,我们有很多限制:

  • 该设备没有安装谷歌服务,因此可能没有任何服务可以工作(或者没有谷歌服务,任何一个都可以工作?)
  • 我们不能仅仅调用Android浏览器进行登录,因为它会显示地址栏,这将允许用户在互联网上冲浪,这是我们不允许的
  • 我们无法完全控制设备上安装的软件:无法安装谷歌服务、更新Android版本、安装谷歌Chrome等等,我们只能更新我们的应用程序

有了这些限制,我们还能做些什么呢?

您需要使用OAuthWeb服务来实现基于您的需求的解决方案

参考链接

下面是一个示例github项目,它使用OAuth 2 web服务登录到Twitter。在Android应用程序中使用Google的OAuth2 web服务时,您可以从it部门获得帮助

存储库链接:

Web服务消费屏幕链接:


我希望这会有所帮助。

有一个库支持Android 1.5和更高版本的Google OAuth 2:

在此处找到示例代码:


根据您方面的问题,最好从应用程序中打开一个指向登录Weburl的意图[这不会触发地址栏链接]

请参阅此stackOverflow页面

现在,您可以使用共享首选项存储身份验证数据,以便进一步登录[如果应用程序的要求允许。]


通过浏览器实现:

1) 注册自定义URI方案(),例如,app-oauth2://

2) 在用户浏览器中发出访问请求

https://accounts.google.com/o/oauth2/v2/auth?
scope=...
access_type=offline&
include_granted_scopes=true&
state=state_parameter_passthrough_value&
redirect_uri=http://example.com/oauth2-handler&
response_type=code&
client_id=...
3) 如果用户在确认对话框中接受或拒绝请求的权限,它将被重定向到带有一些参数的重定向uri()

4) 在重定向uri处理程序()的一侧,使用以下参数重定向到自定义uri方案:

  • 成功:app-oauth2://?状态=状态\参数\传递\值和代码=…&范围=#
  • 失败:app-oauth2://?错误=访问被拒绝&状态=状态参数传递值#

5) 在您的应用程序中,您可以从选项4解析URI schemeapp-oauth2://,并接收代码供将来使用或向用户显示错误。

您的应用程序要求用户授权它访问自己的资源?如果没有,那么您可能不需要OAuth。Oauth不是身份验证不幸的是,这些是我们客户的要求,他们有我们必须用于身份验证的谷歌应用程序帐户。请明确,Oauth不是身份验证。谷歌的认证至少需要一个网络浏览器(更多的是2FA),这是没有办法的。你有没有试过在电视和嵌入式设备上使用oauth流?看看这里:这仍然是基于浏览器的oauthOk应用程序支持什么Android API版本?该设备没有安装谷歌服务!!-你认为这将如何做]它使用AccountManager请阅读第二个链接第一个似乎指向OAuth 2当你有谷歌服务我编辑了答案你是正确的@Aloy A Sen所以我编辑了答案,在这种情况下,你需要OAuth 2的谷歌客户端API库链接有误导性,但找到了正确的代码这是关于oauth 1的,google已经几年不支持它了,就像一个可行的解决方案。如果Cordova支持自定义协议处理和打开用户浏览器的可能性-是的。