在我的项目中,我试图使用Google People API
从我的私人google帐户访问Google通讯录数据(读写访问权限)。我想强调一下,该项目仅适用于单个Google帐户。我的主要问题是对请求进行身份验证并获取数据。
我已经安装了googleapis客户端库。然后,使用Credentails
标签下的Google API控制台,创建了一个新的Service Account
,我得到了一个包含client_email
,private_key
和其他身份验证所需数据的json文件。接下来,我尝试设置所有内容
const {google} = require('googleapis');
const contacts = google.people('v1');
const scopes = [
'https://www.googleapis.com/auth/contacts',
'https://www.googleapis.com/auth/contacts.readonly',
];
const privateKey = require('app/config/private-data.json'); // JSON that contains `client_email`, `private_key`
router.get('/googleapis-test', (req, res, next) => {
const auth = new google.auth.JWT(privateKey.client_email, null, privateKey.private_key, scopes);
contacts.people.connections
.list({
auth,
resourceName: 'people/me',
pageSize: 10,
personFields: ['names'],
})
.then((response) => {
return res.send(response.data);
})
.catch(next);
});
在我的私人google帐户中,我有2000多个联系人,但不幸的是我得到的response.data
对象为空。我以为发生了什么事,我创建的服务帐户没有对我的私有Google帐户联系人的权限/访问权限,因此我必须在这两个帐户之间提供某种链接以共享数据。
我在官方文档中发现建议将OAuth 2.0用于此类操作,但是由于我想访问API中的数据,因此没有接口可以填写Google提供的身份验证表单。
如果您能帮助我解决此问题,我将不胜感激。