我们有基于Android的嵌入式设备的应用程序,它使用WebView,在其中我们使用Google OAuth 2登录该应用程序。不幸的是Google will soon block OAuth 2 inside WebView,我们有很多限制:
我们还能做什么其他限制?
答案 0 :(得分:2)
通过浏览器实施:
1)注册自定义URI方案(How to implement my very own URI scheme on Android),例如 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)一侧,使用params重定向到自定义URI方案:
5)在您的应用中,您可以从选项4解析URI方案 app-oauth2:// ,并接收用于将来使用的代码或错误以便向用户显示。
答案 1 :(得分:1)
根据您身边的问题,最好在应用程序中打开一个Intent,目标是登录Weburl [这不会触发地址栏链接]
请参阅此stackOverflow页面 how to open "Add a Google Account" activity using intent?
现在您可以使用共享偏好设置来存储身份验证数据,以便进一步登录[如果应用程序的要求允许的话。]
https://developer.android.com/reference/android/content/SharedPreferences.html
答案 2 :(得分:0)
您需要使用OAuth Web服务根据您的需求实施解决方案。
参考链接:https://developers.google.com/+/web/api/rest/oauth
以下是使用OAuth 2 Web服务登录Twitter的示例github项目。您可以从中获取帮助,以便在Android应用中使用Google的OAuth2网络服务。
存储库链接:
https://github.com/sathify/tagpulse
网络服务消费屏幕链接:
https://github.com/sathify/tagpulse/blob/master/android/src/tag/pulse/main.java
我希望这会有所帮助。
答案 3 :(得分:0)
Google OAuth 2支持Android 1.5及更高版本的库:
此处的示例代码: