rest - 如何将 PubSub Rest API 与 Google 服务帐户一起使用?
问题描述
无论如何,我们可以使用 Google 服务帐户调用 Google PubSub Rest API 吗?
我有一个非常具体的要求,即使用 rest api 在 pub sub 上发布消息,让我知道有什么办法可以做到吗?
如果有一种方法可以使用也有帮助的服务帐户获取所需的 Api Key 或用于 rest api 的令牌。
解决方案
如果你想直接使用 API,没有客户端库,你可以这样做
首先,获取access_token
然后将其添加到请求的标头中
const {GoogleAuth} = require('google-auth-library');
const auth = new GoogleAuth()
const adc = await auth.getApplicationDefault()
const access_token = await adc.credential.getAccessToken();
console.log(access_token.token)
const request = require('request');
const topic = 'projects/gbl-imt-homerider-basguillaueb/topics/go-hello'
const options = {
url: ' https://pubsub.googleapis.com/v1/' + topic + ':publish',
method: 'POST',
headers: {
'Authorization': 'Bearer ' + access_token.token,
'Content-type': 'application/json'
},
body:'{"messages":[{"data":"' + Buffer.from("Hello World").toString('base64') + '"}]}'
};
request(options, function(err, res, body) {
let json = JSON.parse(body);
console.log(json);
});
编辑
遗憾的是,我在 Nodejs 中太糟糕了,无法为此编写干净的代码。您可以转到文档页面,您可以看到类的构造函数选项GoogleAuth
最后,这样的事情应该可以工作(但我没有做到这一点......太糟糕了......)
const auth = new GoogleAuth({
scopes: '',
keyFile: 'path/to/key.json'
})
因为我很糟糕,所以我正在这样做并且它有效
//Set manually the environment variables
process.env.GOOGLE_APPLICATION_CREDENTIALS='path/to/key.json'
const auth = new GoogleAuth() //Use default credentials
推荐阅读
- batch-file - 使用 Findstr 批量查找具有非 ASCII 字符的字符串
- cv2 - 为什么 cv2.rectangle() 不支持浮点值?
- python - 删除双重文件内容
- php - 如何使用表单、输入和 php 更新一些占位符文本?
- javascript - 如何将模板文字的结果保存到对象中?
- npm - 安装vue-cli时如何修复错误
- python-3.x - 错误:找不到满足要求 tensorflow 的版本(来自版本:无)
- c# - .net Core 3.0 中的 Aes 加密“指定的密钥不是此算法的有效大小。”
- android - 应用程序在 IllegalArgumentException 后被杀死
- mysql - 无法在 ubuntu 19.04 上安装 libzip4