Node.js环境调用百度智能云(百度云)api鉴权认证三步走

方式一 :Postman脚本的方式生成v1版本的认证字符串

在这里插入图片描述

Postman脚本下载
下载Postman pre-request Script 设置 Authorization 示例脚本

方式二:在线签名工具生成 (试用于验证编程字符串签名是否有错误)

签名计算工具 https://cloud.baidu.com/signature/index.html

百度智能云提供了在线生成签名工具,用户仅需填写必要请求信息、访问密钥(包含访问密钥ID(AK)和秘密访问密钥(SK)),可快速生成认证字符串。

在这里插入图片描述

方式三 编程生成认证字符串(适合最终集成自己系统)

文档地址 https://cloud.baidu.com/doc/Reference/s/njwvz1yfu go
在这里插入图片描述

你可以运行下面的命令来安装所有依赖:

npm install crypto axios

客悦·智能外呼平台 AIOB 获取机器人列表接口node.js示例代码

// robotList.js
// npm install crypto axios
const crypto = require('crypto');
const axios = require('axios');
const url = require('url');
const util = require('util');function getUTC() {const date = new Date();const year = date.getUTCFullYear();const month = String(date.getUTCMonth() + 1).padStart(2, '0');const day = String(date.getUTCDate()).padStart(2, '0');const hours = String(date.getUTCHours()).padStart(2, '0');const minutes = String(date.getUTCMinutes()).padStart(2, '0');const seconds = String(date.getUTCSeconds()).padStart(2, '0');return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}Z`;
}
function generateCanonicalUri(urlString) {let parsedUrl = url.parse(urlString, true);return parsedUrl.path;
}/*** 获取机器人列表接口* GET https://aicc.bce.baidu.com/api/v1/robot/list* 文档地址 https://cloud.baidu.com/doc/CCC/s/skt9hds4y*/
function main() {//  1).AK/SK、host、method、URL绝对路径、querystringlet AK = '<管理后台AccessKey>'; //用户的AK(AccessKey)let SK = '<管理后台SecretKey>'; //用户的SK(SecretKey)let ccApiAuthV1 = 'cc-api-auth-v1' // Authorization 前缀(bce-auth-v1/cc-api-auth-v1 具体看文档)let host = 'aicc.bce.baidu.com';let URL = 'api/v1/robot/list';let query = '';let method = 'GET';// 拼接完整的 URLlet fullURL = `https://${host}/${URL}${query}`;const signedHeaders = 'host';//  2).x-bce-datelet x_bce_date = getUTC();console.log('UTC 时间:' + x_bce_date);//  3).header和signed Headerslet headers = {Host: host,'content-type': 'application/json;charset=utf-8','x-bce-date': x_bce_date,};//  4).认证字符串前缀let authStringPrefix = ccApiAuthV1 + '/' + AK + '/' + x_bce_date + '/' + '1800';//  5).生成Canonical Request//  5).1生成Canonical URLlet canonicalUri = generateCanonicalUri(fullURL);console.log('Canonical Uri: ' + canonicalUri);//  5).2生成Canonical QueryStringlet canonicalQueryString = query;//  5).3生成Canonical Headers// 遍历对象的键值对,并获取键和对应的值const canonicalHeaders = `host:${host}`;console.log(`Canonical Headers:[${JSON.stringify(canonicalHeaders)}]`);//  5).4拼接得到Canonical Requestconst canonicalRequest = method + '\n' + canonicalUri + '\n' + canonicalQueryString + '\n' + canonicalHeaders;console.log(`Canonical Request:[${JSON.stringify(canonicalRequest)}]`);//	6).生成signing Key// 生成signingKeyconst signingKey = crypto.createHmac('sha256', SK).update(authStringPrefix).digest('hex');console.log(`signingKey: ${signingKey}`);// 生成Signatureconst signature = crypto.createHmac('sha256', signingKey).update(canonicalRequest).digest('hex');console.log(`Signature: ${signature}`);//	8).生成Authorization并放到header里headers['Authorization'] = `${authStringPrefix}/${signedHeaders}/${signature}`;console.log(headers['Authorization']);//	9).发送API请求并接受响应// 发送 Axios 请求axios.request({method: method,url: fullURL,headers: headers,}).then(response => {console.log('Response:', util.inspect(response.data, false, null, true));}).catch(error => {console.error('Error:', error.response.data);});
}main();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589334.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯嵌入式】六、真题演练(一)-1演练篇:第 14 届真题

温馨提示&#xff1a; 真题演练分为模拟篇和研究篇。本专栏的主要作用是记录我的备赛过程&#xff0c;我打算先自己做一遍&#xff0c;把遇到的问题和不同之处记录到演练篇&#xff0c;然后再返回来仔细研究一下&#xff0c;找到最佳的解题方法记录到研究篇。 目录 解题记录&…

索引的概念

索引的概念    1.索引是一种可选的与表相关的数据库对象&#xff0c;用于提高数据的查询效率。    2.索引是一种有序的数据结构。    3.如果一个表没有创建索引&#xff0c;则对该表进行查询时需要进行全表扫描&#xff1b;如果创建了索引&#xff0c;则在有条件查询时…

java 枚举

枚举的格式 枚举是一种特殊的类 枚举类的最开始必须罗列所有类型 枚举类提供了一些父类的方法 values() :获取所有的的枚举对象,是一个数组 public enum A {A1, A2, A3;String name;A() {this.name "default";}String getName() {return name;}void setName(Strin…

AI预测福彩3D第25弹【2024年4月3日预测--第4套算法重新开始计算第10次测试】

今天继续对第4套算法进行测试&#xff0c;因为第4套算法已连续多期命中&#xff0c;相对来说还算稳定。好了&#xff0c;废话不多说了&#xff0c;直接上预测的结果吧~ 2024年4月3日福彩3D的七码预测结果如下 第一套&#xff1a; 百位&#xff1a;1 2 …

Windows系统下配置安装adb与Andriod手机有线和无线通信

目录 一、adb二、adb下载2.1 同版本获取2.2 官网下载 三、添加环境变量四、测试adb是否安装成功五、数据线adb连接手机5.1 开启开发者选项5.2 数据线连接电脑和手机5.2.1 没反应问题 5.3 终端测试 六、无线adb连接手机6.1 设置端口号6.2 添加手机ip地址6.3 测试无线adb连接 七、…

【网站项目】面向学生成绩分析系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

再拓信创生态圈|宁盾身份域管与深信服桌面云完成兼容互认证

近日&#xff0c;宁盾国产化身份域管&#xff08;即身份目录服务软件&#xff09;与深信服桌面云系统aDesk完成产品兼容性互认证。经过共同严格测试&#xff0c;宁盾国产化身份域管能够与深信服桌面云系统兼容对接运行&#xff0c;双方相互兼容&#xff0c;共同为企事业单位提供…

SQLynx发布3.0.0版本:带来更流畅便捷的SQL开发体验

作为新一代的一站式数据库管理开发工具&#xff0c; SQLynx自发布上线以来&#xff0c;一直受到广大用户的好评与鼓励。 为了给用户提供更高效、更便捷、更可靠的数据库管理开发体验&#xff0c;SQLynx今日正式发布3.0.0版本&#xff0c;同步在麦聪软件官网上线&#xff0c;全…

【leetcode】双指针(二)

标题&#xff1a; 【leetcode】双指针&#xff08;二&#xff09; 水墨不写bug 正文开始&#xff1a; &#xff08;一&#xff09;总和为目标值的两个数 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况&#…

缺省参数

缺省参数 缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实 参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void Func(int a 0) {cout<<a<<endl; } int main() {Func(); // 没有传…

Rust语言中Regex正则表达式,匹配和查找替换等

官方仓库&#xff1a;https://crates.io/crates/regex 文档地址&#xff1a;regex - Rust github仓库地址&#xff1a;GitHub - rust-lang/regex: An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear tim…

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)

继续上篇博文&#xff1a;STM32学习和实践笔记&#xff08;4&#xff09;: 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写&#xff0c; 为什么&#xff1a;当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时&#xff0c;其实就是将对应的该引脚的寄存器地…