google-apps-script - Discord API 告诉我:“401:未经授权”,当我使用 Google 脚本进行 GET 时:“UrlFetchApp.fetch()”
问题描述
我正在建立一个 api 连接。我想从我的应用程序的不和谐 api 获取信息。
所以我实现了 OAuth2 没有任何问题,我有我的访问令牌。然后我尝试查询一些端点(/users/@me,/users/@me/guilds,...),但每次我得到同样的错误。
我在标头中发送我的授权令牌,但它仍然返回错误 401。
这是我的“身份验证码”:
function doGet(e){
if(typeof e.parameter.code !== 'undefined') {
var code = e.parameter.code;
getAccessToken(code);
}
return ContentService.createTextOutput('someThink..');
}
function getAccessToken(code){
var API_TOKEN_URL = 'https://discordapp.com/api/oauth2/token'
var CLIENT_ID = 'XYZ'
var CLIENT_SECRET = 'XYZ'
var REDIRECT_URI = 'https://script.google.com/macros/s/AKfycbyyt9-FiVv0zXOr8p8pMfojwEs2AXvBftVN1xdWeU3UQ1xgURD/exec'
data = {
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'grant_type': 'authorization_code',
'code': code,
'redirect_uri': REDIRECT_URI,
'scope': 'identify'
}
header = {
'method' : 'post',
'Content-Type': 'application/x-www-form-urlencoded',
'payload' : data
}
var result = UrlFetchApp.fetch(API_TOKEN_URL, header);
if (result.getResponseCode() == 200) {
var params = JSON.parse(result.getContentText());
Logger.log(params.access_token); // all is fine
getUser(params.access_token, params.token_type)
}
}
这段代码是我的 API 请求:
function getUser(accessToken, token_type){
var API_USERS_URL = 'https://discordapp.com/api/users/@me';
header2 = {
'method' : 'GET',
'Authorization': token_type + ' ' + accessToken,
// I tested all of them
// 'followRedirects' : true,
// 'muteHttpExceptions': true,
// 'Content-Type': 'application/json',
// 'Content-Type': 'application/x-www-form-urlencoded',
}
var resultUsers = UrlFetchApp.fetch(API_USERS_URL, header2); // ERROR HERE !
if (resultUsers.getResponseCode() == 200) {
var paramsUser = JSON.parse(result.getContentText());
Logger.log(paramsUser);
}
}
我接受具有相同范围的不和谐连接:识别。
我很努力,但我没有成功。每次同样的错误:
{"code": 0, "message": "401: Unauthorized"}
解决方案
您将标头作为params
/options
参数发送到UrlFetchApp.fetch()
. 将标头作为标头参数发送到options
:
var resultUsers = UrlFetchApp.fetch(API_USERS_URL,{headers: header2});
推荐阅读
- go - 如何去mod获取本地包?
- taskscheduler - 任务计划程序无法遵循网络路径
- php - 我们可以像 Wordpress 编辑器一样在 Laravel 中实现 Tinymce 功能吗?
- jenkins - 安装 Jenkins 2.302.2、Win 安装程序时记录错误
- php - 在 PHP 中通过引用传递变量的问题
- kotlin - 在 Kotlin 中仅向具有多个类型参数的扩展函数提供一个类型参数
- python - 烧瓶和opencv捕获的Python问题
- postgresql - KnexJS 如何将 whereIn() 更改为 join() 以进行双重连接以获得更好的性能
- ruby-on-rails - 从另一个应用程序解密 ActiveSupport::MessageEncryptor 值
- android - 如何使用现有的电子邮件和密码登录机制管理 Google OAuth?