google联系人自定义导入小工具开发过程及源码
一、起因
做这个小工具的起因是把黑莓8700g换成了Android系统的三星i5700。由于我的8700g是4.2版本的ROM,不支持google sync程序的安装,而我换了手机后又懒得再去鼓捣黑莓的刷机,因此就直接用黑莓的管理软件导出CSV文件,然后在gmail的通讯录管理界面中导入。
可是问题就接踵而来,gmail的通讯录导入程序不能识别黑莓导出的所有字段,因此只有部分字段被导入到gmail 通讯录中了,这显然不行。
接着我用gmail通讯录导出了一个csv文件,然后按照导出的CSV文件的格式来修改黑莓导出的CSV文件,并使排序完全一致。结果这样也不行,导入的通讯录更加不完整。
仔细查看了gmail的帮助,根据帮助提供的范例修改了CSV的字段名称,倒是可以导入。但gmail帮助提供的范例中的字段很少,并不能完整的支持我的通讯录。
我试验过的gmail通讯录导入支持的字段如下:
名,姓,公司(或者用“单位”也可以),职务,移动电话,住宅电话,电子邮件地址
如果联系人的信息并不多,那么用上面的字段就可以完成了,可是我的很多联系人,都有超过2个以上的电话,有十几个联系人有4个电话,因此就没办法用这个来导入。
这还不算,最大的问题,是gmail中的导入功能无法支持群组的导入。也就是说,原来在黑莓中对联系人进行的分组,都无法识别成gmail的群组。
要解决以上问题,就只能使用Google Contacts Data API来处理了。
二、分析与选择
Google Data API其实已经提供了很多客户端库,但是唯独没有基于ActionScript的。因此只能使用XML来处理。
1.AIR还是SWF
本来准备做两个版本,先做SWF版,然后转成AIR版,但后来发现SWF有很多限制,因此只能使用AIR来制作这个工具。
SWF的限制包括:
- 仅支持HTTP协议的POST和GET方法,不支持PUT和DELETE,Google Data API的某些操作是需要PUT和DELETE的。(对PUT、DELETE不清楚的可以看这里)
- google的跨域文件的限制
2.选择何种google账户认证方式
google提供了三种账户认证的方式(注意:这个页面的ClientLogin的“了解详情”链接是错误的,要访问正确的地址,可猛击这里)、OAuth、AuthSub和ClientLogin,我对这三种都进行了测试。Google推荐使用的是OAuth,这种认证方式复杂但安全,它需要打开google的登录界面进行登录,登录后再返回软件界面。对于桌面程序来说,这就要判断用户的操作,怎样才算作登录成功了。比如判断浏览器的标题栏、或者判断cookie、或者使用时间轮询等等。对于一个小工具来说,这太复杂了。
AuthSub与OAuth类似,但流程要简单一些,还是要使用google的登录界面。
ClientLogin就简单多了,只需要提供google账户的用户名和密码就可以了。因此这个工具使用的是ClientLogin。
3.Google数据API(Google Data API)
这里是Google Data API的列表页面,其中,Goole 账户验证和Google 数据 API是大部分API都要用到的规范,只要涉及到数据处理和账户验证,都要用到这两个API,而对应的产品也有自己的API,例如google通讯录的API就是Google Contacts Data API,联系人API中的很多细节,却是Google 数据 API提供的。
4.E4X
在没有客户端库的情况下,对XML的操作,是个挺麻烦的事情。这个小工具很简单,大部分的工作量其实都花在对XML的处理上。大量的XML操作让我感觉到E4X真的是却是非常方便和优雅。对于E4X操作,下面这两篇文章有很大的参考价值:
或许,我后面也会写一篇经验吧。
三、工具使用注意事项
- CSV编码必须为UTF-8;
- CSV字段名称不能重复;
- CSV的换行符默认使用“\n”,可以在源码google::GoogleContact.CSV_LINE_BREAK中修改。“\n”是Linux系统的默认换行符,windows系统的默认换行符为“\r\n”。具体你的CSV是使用什么作为换行符,可以在CSV的编辑工具中指定。许多文本编辑器支持换行符的转换。
- CSV中联系人群组字段的名称必须为“群组”(当然,可以在源码中自己改google::GoogleContact.CSV_GROUP_FIELD_NAME);
- 每一次提交之后,不要重复操作,要等待google返回后再处理。
四、下载信息
1.下载AIR运行时并安装;
2.下载AIR包并双击安装:
源码:http://googlecontactimporter.googlecode.com/svn/trunk/
项目地址:http://googlecontactimporter.googlecode.com
- 文章ID:1032
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/1032/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。