我目前正在尝试在android中编写一个与谷歌任务同步的任务管理器。该应用程序使用谷歌客户端API和AccountManager与谷歌服务器进行通信。它在android下工作。然而,我想在黑莓手机的android播放器下运行它。虽然.apk文件转换为黑莓应用程序,但AccountManager似乎不适用于playbook android player,因为它与谷歌帐户无关。我发现在没有客户经理的情况下很难与谷歌服务器进行沟通。我尝试过手动向AccountManager添加一个帐户,但它也引发了一个安全异常。我很好奇,如果有用户名和密码(以及访问API密钥),是否有其他方法可以登录谷歌服务?感谢
AccountManager和Google Play Services都允许您在Android上使用本机体验通过OAuth 2.0授权流(仅适用于Google API),它们仅在Google experience设备上可用。黑莓行动手册的Android模拟器可能不是谷歌体验环境。
因此,在这种情况下,最好的方法是使用WebView来实现OAuth 2.0流。这也是非Google API(Facebook、Microsoft、Salesforce、Dailymotion等)需要使用的技术
基本上,你必须将你的新用户发送到WebView中的一个特殊URL,谷歌(或其他OAuth2提供商)会要求他们允许你访问所请求的API。然后,一旦生成并由Google身份验证服务器返回,您将需要从URL或页面内容中提取身份验证代码。最后一步是将该身份验证代码交换为刷新和访问令牌。
您需要阅读并理解OAuth 2.0授权流是如何为已安装的应用程序工作的:https://developers.google.com/accounts/docs/OAuth2#installed
在Android上使用WebView执行OAuth 2.0的分步过程如下:
- 将用户重定向到嵌入WebView中的授予屏幕URL
- 使用
http://localhost
作为重定向URI - 使用onPageStarted方法注册WebViewClient以拦截页面更改
- 通过检测到
http://localhost
的重定向来检测成功/失败的授权,并从WebView的URL读取授权代码 - 通过将身份验证代码交换为令牌来完成OAuth 2流,并将这些令牌保存在本地数据库中以供进一步使用
你可以在Onavo的GitHub上找到一个这样做的开源示例。