使用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){...});
- 有没有什么好的节点模块连接谷歌缩短API缩短长URL
- 如何从passportjs中的刷新令牌获取新的Google oauth访问令牌
- 谷歌预测API v1.6 – 如何让服务器到服务器调用?
- 无法通过nodejs发送带有googleapis服务帐户和JWTauthentication的邮件
- Firebase – NodeJS:用于Google API的OAuth2域范围委派
- googleapis TypeError:authClient.request不是nodejs中的函数
- google-api-nodejs-client获取谷歌联系人
- 从Firebasefunction访问Google Site Verification API
- 无效的oauth2令牌请求