- 该设备未安装Google服务,因此可能没有'正式'的登录方式可用(或者说没有任何一种登录方式可以在没有Google服务的情况下工作?)
- 我们不能仅调用Android浏览器来进行登录,因为它会显示地址栏,这将允许用户浏览互联网,这是不允许的。
- 我们不能完全控制设备上安装的软件:无法安装Google服务,更新Android版本,安装Google Chrome等等...,我们只能更新自己的应用程序。
在这些限制下,我们还能做些什么呢?
在这些限制下,我们还能做些什么呢?
通过浏览器实现:
1)注册自定义URI方案(如何在Android上实现自己的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) 如果用户在确认对话框中接受或拒绝请求的权限,将重定向到redirect_uri (http://example.com/oauth2-handler) 并携带一些参数。
4) 在redirect_uri处理程序 (http://example.com/oauth2-handler) 的一侧,将使用以下参数进行自定义URI方案的重定向:
5) 在您的应用程序中,您可以从选项4中解析URI方案app-oauth2://并接收未来使用的代码或错误以显示给用户。
https://developer.android.com/reference/android/content/SharedPreferences.html
您需要使用OAuth Web服务来实现基于您的需求的解决方案。
参考链接: https://developers.google.com/+/web/api/rest/oauth
这是一个使用OAuth 2 Web服务登录Twitter的示例Github项目。您可以从中获取帮助,以在Android应用程序中使用Google的OAuth2 Web服务。
仓库链接:
https://github.com/sathify/tagpulse
Web服务消费屏幕链接:
https://github.com/sathify/tagpulse/blob/master/android/src/tag/pulse/main.java
希望这能帮到您。
有一个库支持 Android 1.5 及更高版本的 Google OAuth 2:
这里可以找到示例代码: