使用Google Contacts API版本3.0和NodeJS的“护照”同步联系人

我正在使用护照,并希望使用Google Contacts API 3.0版将Google通讯录与我的应用程序同步(这会突然变得十倍有用)。

有没有人做到这一点? 如果是这样,你有一些示例代码? 是否有可能使用护照authentication,以使其一切工作?

这分为两部分,授权,然后是实际的请求。

它基本上是使用OAuth2协议,在那里你redirect客户端谷歌url与范围(您必须至less有您的范围内的https://www.google.com/m8/feeds能够读写联系人)和您的客户端ID /秘密(通过注册您的应用程序来获取它们,然后谷歌将用URL上的访问令牌redirect用户。

你不需要自己做,因为有不同的模块已经这样做:

  • 护照谷歌-的OAuth

    这使得它很容易,并假设你已经使用护照,这可能是你想要的。 它是由passportjs的作者写的。 请按照OAuth 2.0策略中的示例进行操作。 请注意,当您调用passport.authenticate('google', ...)时,您需要添加正确的范围。 当这个模块获得令牌时,它将获得用户configuration文件,所以你必须有以下3个范围之一:

     passport.authenticate('google',{scope:[//接下来的三个`auth`范围之一是需要的。
         'https://www.googleapis.com/auth/userinfo.profile',
         'https://www.googleapis.com/auth/userinfo.email',
         'https://www.googleapis.com/auth/plus.login',
         'https://www.google.com/m8/feeds'
     ]}),
    
  • googleapis

    这是谷歌官方支持的模块,由谷歌员工创build。 您可以使用它进行身份validation,但可悲的是,它不支持包含谷歌联系人的gData。 你可以查看这个例子,看看你如何获得令牌。 你只需要这个模块的m8/feeds范围,如果你不想获取用户configuration文件,则不需要其他的。

  • GDATA-JS

    这是一个非stream行的非维护模块,但比前两个模块更轻量。 它可能需要一点点抛光的框。 我build议也阅读来理解api的权利。

一旦你得到了令牌,那么你会稍微轻松一点,提出请求并获取数据。

如果你阅读文档 ,其实很简单。 例如,要获取所有联系人(几乎所有的联系人,分页),您需要对此url发出GET请求:

 https://www.google.com/m8/feeds/contacts/default/full?alt=json&oauth_token=THE_ACCESS_TOKEN 

再次有很多模块可以帮助你。

  • 谷歌的联系人
  • 节点GDATA
  • gdata-js阅读源代码以了解它的api。 其实很简单:

     var client = require('gdata-js')(GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET);
     client.setToken({access_token:accessToken,refresh_token:refreshToken});
     client.getFeed('https://www.google.com/m8/feeds/contacts/default/full',function(err,result){...});