Mer*_*erc 5 sync google-api node.js oauth-2.0 passport.js
我使用的是护照,并希望使用Google Contacts API 3.0版将Google通讯录与我的应用程序同步(这会突然变得有用10倍).
有人这样做过吗?如果是这样,你有一些示例代码吗?是否可以使用护照身份验证使其全部正常工作?
Far*_*hat 17
这有两个部分,授权,然后是实际请求.
它基本上使用OAuth2协议,您可以将客户端重定向到带有范围的google url(您必须至少https://www.google.com/m8/feeds
在您的范围内能够读取和写入联系人)和您的客户端ID/secret(通过注册您的应用来获取它们.)谷歌将使用URL上的访问令牌重新定向用户.
您不需要自己执行此操作,因为有不同的模块已经执行此操作:
这很容易,假设你已经使用了护照,这可能就是你想要的.它由passportjs的作者撰写.只需按照其中的示例操作OAuth 2.0策略即可.请注意,您需要在调用时添加正确的范围passport.authenticate('google', ...)
.该模块获取令牌后,将获取用户配置文件,因此您必须拥有以下3个范围之一:
passport.authenticate('google', { scope: [ // One of the next three `auth` scopes are needed. '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' ] }),
这个模块由谷歌官方支持并由谷歌员工创建.您可以使用它进行身份验证,但遗憾的是它不支持包含谷歌联系人的gData.您可以查看示例以了解如何获取令牌.您只需要m8/feeds
使用此模块的范围,如果您不想获取用户配置文件,则无需其他模块.
这是一个不受欢迎的非维护模块,但它比前两个模块更轻量级.它可能需要一点点抛光.我建议也阅读理解api权利的来源.
一旦你获得了令牌,那么你可以选择稍微更容易的部分,发出请求并获取数据.
如果你阅读文档,它实际上非常容易.例如,要获取所有联系人(几乎全部,它是分页的),您需要向此URL发出GET请求:
https://www.google.com/m8/feeds/contacts/default/full?alt=json&oauth_token=THE_ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
同样,有许多模块可以帮助您.
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) { ... });
归档时间: |
|
查看次数: |
3704 次 |
最近记录: |