使用谷歌API客户端无需客户经理

问题描述:

我目前正在写在android系统任务管理器,它与谷歌的任务同步。该应用使用谷歌客户端API和AccountManager与谷歌服务器进行通信。它在android下工作。不过,我想在Blackberry Playbook上的android player下运​​行它。虽然.apk文件转换为黑莓应用程序,它似乎的AccountManager下不剧本的Android播放器工作,因为它不依赖于一个谷歌帐户。如果没有客户经理,我发现很难与谷歌服务器进行沟通。我已经尝试手动向AccountManager添加一个帐户,但它也会引发安全异常。我很好奇,如果有任何其他方式登录到谷歌服务给予用户名和密码(以及访问的API密钥)?由于使用谷歌API客户端无需客户经理

的的AccountManager和谷歌播放服务既让你去通过OAuth 2.0用户授权流与Android原生体验(仅适用于谷歌的API)仅在谷歌体验设备上可用。 Blackberry Playbook的Android模拟器可能不是Google体验环境。

因此,在这种情况下,最好的办法是使用的WebView实现一个OAuth 2.0流。这也是您需要用于非Google API(Facebook,Microsoft,Salesforce,Dailymotion,...)的技术。

基本上,您必须将新用户发送到WebView中的特定URL,其中Google或其他OAuth 2提供商)将要求他们向您发起访问所请求的API。然后,您需要从网址或页面内容中提取验证码,一旦它生成并由Google验证服务器返回。最后一步是交换认证代码以进行刷新和访问令牌。

你需要阅读和理解2.0授权流程是如何的OAuth适用于已安装的应用:https://developers.google.com/accounts/docs/OAuth2#installed

的一步一步的过程中做的OAuth 2.0与Android上的WebView情况如下:

  • 重定向用户访问嵌入式WebView中的授予屏幕URL
  • 使用http://localhost作为重定向URI
  • 使用onPageStarted方法注册WebViewClient以拦截页面更改
  • 检测成功/失败通过检测重定向授权http://localhost并从web视图
  • 完成通过交换对令牌的AUTH码的OAuth 2流的URL读取的AUTH码,并保存在本地数据库中的这些标记以供进一步使用

你可以找到,这是否对Onavo's GitHub一个开源的样品。

+0

唯一的缺点是,谷歌不喜欢这种解决方案,并且据我所知,你不能用这种方式在谷歌API客户端库获得的令牌。也许我错了,有什么提示? – Goran 2012-11-19 09:37:15

+0

是的你错了:)这完美的作品。此外,Android团队不喜欢该解决方案的事实并不相关,因为它是非Google体验设备上唯一受支持的解决方案。例如,这已经在iOS上使用,即使iOS的Google客户端库也支持它。通过更多细节和示例更新我的答案。 – Nivco 2012-11-19 10:58:11

+0

谢谢,这帮了我很多! – Goran 2012-11-19 21:16:50