我们公司有一台nodered服务器。当我通过 PC 浏览器进入 nodered 服务器网页时,我只需单击登录按钮,不再要求提供凭据,然后我就进入了。我看到我的用户“abc”为管理员。我可以毫无问题地从 nodered 菜单中将所有流程导出为一个 json 文件。
现在我想通过命令行远程执行此导出。但是,当我尝试使用相同的管理凭据执行命令行代码时(当我在 PC 上登录 Windows 时),我在导出的 json 文件中仅收到文本“未经授权”。在nodered服务器的设置文件settings.js中,我可以看到nodered的身份验证类型为“credentials”。缺什么?为什么我可以手动导出,为什么不能通过命令行远程导出?
C:\>curl -u myuser:mypassword https://myserver:1881/flows -o C:\temp\nodered_flows.json
管理 API 不使用用户名和密码,它使用不记名令牌,如此处文档中所述:
https://nodered.org/docs/api/admin/oauth
您需要根据用户名/密码生成令牌,如下所示:
$ curl http://localhost:1880/auth/token --data 'client_id=node-red-admin&grant_type=password&scope=*&username=admin&password=password'
{
"access_token": "A_SECRET_TOKEN",
"expires_in":604800,
"token_type": "Bearer"
}
用正确的值替换
admin
和 password
然后您可以使用
调用API$ curl -H "Authorization: Bearer A_SECRET_TOKEN" http://localhost:1880/flows -o flows.json
请注意,即使像这样导出所有流,API 也永远不会返回链接到该流的任何凭据。