我试图制造一个不和谐的机器人,如果你在聊天中输入-cr,它接受用户的参数(是Clash Royale的player标记),然后使用包节点-fetch来接收我指定端点的数据。我经常遇到{ reason: 'accessDenied', message: 'Invalid authorization' }的错误。我对这些东西非常陌生,尤其是API,但我希望能够访问某些数据,稍后我可以决定这些数据(我知道怎么做)。我的代码是:
const fetch = require('node-fetch')
module.exports = {
name: 'clash',
aliases: ['cr', 'clashroyale'],
category: 'This',
utilisation: '{prefix}clash',
async execute(client, message) {
var msgArgs = message.content.slice(this.name.length + 1)
var endpoint = `/players/${msgArgs}`
var url = `https://api.clashroyale.com/v1`
var token = `hidingmytoken`
fetch(url + endpoint, {
method: 'POST',
headers: {
"Authorization": token
}
}).then(data => data.json()).then(json => {
console.log(json)
})
},
};消息与msgArgs和不和谐的部分都是工作的,但是让我感到冲突的Royale是一个很大的障碍。用于Clash Royale的API可以在这里找到,https://developer.clashroyale.com/#/documentation,我通常只停留在这个概念上。我使用的是节点-fetch的2.6.6版本,这样我就可以使用require()方法,如果这确实重要的话,这个方法应该可以工作。一般来说,我如何正确地传递我的令牌来接收API数据?
发布于 2021-12-22 23:30:56
因为Clash Royale使用承载认证,所以您需要指定它将是一个承载令牌。
headers: {
'Authorization': `Bearer ${token}`
}发布于 2021-12-24 16:04:46
我实现了以下功能。代码是用GO编写的,但是您可以复制逻辑并将其翻译成语言。
该库具有以下功能:
https://github.com/alessiosavi/GoClashRoyale/blob/master/api/auth.go
https://stackoverflow.com/questions/70455967
复制相似问题