使用令牌生成的客户端从服务器端的人员 API 检索生日和性别



我想从后端nodejs服务器中的谷歌人API中检索生日和性别。 访问令牌是使用以下 2 个作用域生成的客户端: https://www.googleapis.com/auth/user.birthday.read https://www.googleapis.com/auth/userinfo.profile

客户端发送访问令牌,服务器按以下方式查询人员 API:

const {google} = require('googleapis');
async function getDataFromPeopleAPI(googleId, accessToken) {
try {
let params = {
resourceName: `people/${googleId}`,
personFields: 'birthdays,genders',
access_token: accessToken //generated by client
};
let res = await google.people({
auth: GOOGLE_API_KEY //API key
}).people.get(params);
let {birthdays, genders} = res.data;
} catch (e) {
}
};

问题是,即使我的生日设置为公开并且我的性别,人们 api 总是返回相同的结果。我没有收到任何错误代码,但我从未收到我想要的数据。这是我得到的回复:

"resourceName": "people/102865456870877320332",
"etag": "%EgUBBwg3LhoEAQIFBw=="
}

查询人员 API 时我做错了什么? 谢谢!

这可能太旧了,无法回答,但这是请求的正确格式:

const {google} = require('googleapis');
let userData = await google
.people({
version: "v1", // mention the API version
auth: process.env.GOOGLE_SERVER_API_KEY,
})
.people.get({
resourceName: "people/me", // not people/${googleId}
personFields: "genders,birthdays", // mention your scopes
access_token: accessToken, // generated by client
});

有关范围文档,请参阅此 URL: https://developers.google.com/people/api/rest/v1/people/get

最新更新