Node.js 无法访问 Google AdSense 管理 API。 'user does not have adsense account'
Node.js cannot access Google AdSense Management API. 'user does not have adsense account'
我正在尝试为 node.js 上托管的网络应用程序生成 AdSense 报告。
由于它是服务器到服务器的通信,我需要使用服务帐户。
我遵循了 this 指南,但我总是收到错误消息:
{
domain: "global"
message: "User does not have an AdSense account."
reason: "noAdSenseAccount"
}
也试过 this JSON Web Tokens Guide 但也遇到了上面的错误。
我得到了什么:
- Adsense 管理 API 已启用。
- 已创建服务帐户凭据
- 已将服务帐户电子邮件地址添加到 google AdSense 用户管理
- 在 Google API Explorer 中测试,它工作正常
screenshot
注意: 它的状态停留在 "pending"。
这是我尝试连接和检索数据的代码:
const googleAuth = require('google-auth-library');
const GOOGLE_KEYS = require(path.join(__dirname, '/credentials/jwt.keys.json'));
this.jwtClient = new googleAuth.JWT(
GOOGLE_KEYS.client_email,
null,
GOOGLE_KEYS.private_key,
['https://www.googleapis.com/auth/adsense'],
);
this.jwtClient.authorize(async (err: any, tokens: any) => {
if (err) throw new Error(err);
this.jwtClient.setCredentials(tokens);
const url = `https://www.googleapis.com/adsense/v1.4/accounts`;
const listData = await this.jwtClient.request({url})
.catch((err: any) => {
console.log(err, 'error');
res.status(500).json(err)
});
res.status(200).json(data);
});
我的问题是:
1、为什么卡在"pending"状态?
2. 有没有办法使用服务帐户凭据访问 API?
3.如果是,我可以通过哪种方式实现?
我正在尝试为 node.js 上托管的网络应用程序生成 AdSense 报告。 由于它是服务器到服务器的通信,我需要使用服务帐户。 我遵循了 this 指南,但我总是收到错误消息:
{
domain: "global"
message: "User does not have an AdSense account."
reason: "noAdSenseAccount"
}
也试过 this JSON Web Tokens Guide 但也遇到了上面的错误。
我得到了什么:
- Adsense 管理 API 已启用。
- 已创建服务帐户凭据
- 已将服务帐户电子邮件地址添加到 google AdSense 用户管理
- 在 Google API Explorer 中测试,它工作正常
screenshot
注意: 它的状态停留在 "pending"。
这是我尝试连接和检索数据的代码:
const googleAuth = require('google-auth-library');
const GOOGLE_KEYS = require(path.join(__dirname, '/credentials/jwt.keys.json'));
this.jwtClient = new googleAuth.JWT(
GOOGLE_KEYS.client_email,
null,
GOOGLE_KEYS.private_key,
['https://www.googleapis.com/auth/adsense'],
);
this.jwtClient.authorize(async (err: any, tokens: any) => {
if (err) throw new Error(err);
this.jwtClient.setCredentials(tokens);
const url = `https://www.googleapis.com/adsense/v1.4/accounts`;
const listData = await this.jwtClient.request({url})
.catch((err: any) => {
console.log(err, 'error');
res.status(500).json(err)
});
res.status(200).json(data);
});
我的问题是:
1、为什么卡在"pending"状态?
2. 有没有办法使用服务帐户凭据访问 API?
3.如果是,我可以通过哪种方式实现?