2017-03-22 29 views
13

我们有一个基于Android的嵌入式设备的应用程序,它使用WebView,并在其中使用Google OAuth 2登录到应用程序。不幸的是Google will soon block OAuth 2 inside WebView,我们有很多的限制:(?也许任何人都会没有谷歌服务工作)在基于Android的嵌入式设备上使用Google OAuth 2

  • 该设备没有安装谷歌服务,因此大概没有'official' way of logging in会工作
  • 我们可以只是调用Android浏览器进行登录,因为它显示地址栏,这将允许用户上网,这是我们不能允许的
  • 我们不完全控制安装在设备上的软件:can'不要安装Google服务,更新Android版本,安装谷歌浏览器等,我们只需更新我们的应用程序即可。

我们还有什么可以做这些限制吗?

+0

你的应用需要用户授权才能访问自己的资源?如果没有,那么你可能不需要OAuth。 Oauth不认证 – pinoyyid

+0

不幸的是,这些是我们客户的要求,他们有谷歌应用程序帐户,我们必须使用它进行身份验证。 – iirekm

+0

要清楚,OAuth不是身份验证。谷歌的身份验证至少需要一个Web浏览器(更多用于2FA),这是没有办法的。 – pinoyyid

回答

0

您需要使用OAuth Web服务来根据您的需求实施解决方案。

参考链接https://developers.google.com/+/web/api/rest/oauth

下面是使用OAuth 2 web服务登录到Twitter的一个样本github上的项目。您可以从中获取帮助,以便在您的Android应用程序中使用Google的OAuth2网络服务。

Repository链接:
https://github.com/sathify/tagpulse

Web服务消费屏幕链接: https://github.com/sathify/tagpulse/blob/master/android/src/tag/pulse/main.java

我希望这有助于。

+0

这是关于oauth 1,谷歌不支持它多年 – iirekm

1

实现通过浏览器:

1)注册自定义URI方案(How to implement my very own URI scheme on Android),例如,应用程序-的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)如果用户接受或拒绝请求的权利我n中的确认对话框中,它会被重定向到REDIRECT_URIhttp://example.com/oauth2-handler)与一些PARAMS

4)在REDIRECT_URI处理机http://example.com/oauth2-handler侧),母马重定向到自定义URI方案使用参数:

  • 成功:APP-的oauth2://状态= state_parameter_passthrough_value &码= ... &范围= ...#
  • 失败:APP-的oauth2://错误= ACCESS_DENIED &状态= state_parameter_passthrough_value#

5)在您的应用程序,你可以解析URI方案APP-的oauth2://从选项4接收未来使用的代码或错误以显示给用户。

+0

看起来像一个可行的解决方案。任何想法如何这可能与科尔多瓦工作? –

+0

如果Cordova支持自定义协议处理和打开用户浏览器的可能性 - 是的。 – cetver

相关问题