我正在建立一个api连接。我想从discord 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);
}
}
我接受与同一SCOPES不一致的连接:识别。
我努力了但是我没有成功。每次出现同样的错误:
{"code": 0, "message": "401: Unauthorized"}
您将标题作为params
/ options
参数发送到UrlFetchApp.fetch()
。在options
中将标头作为标头参数发送:
var resultUsers = UrlFetchApp.fetch(API_USERS_URL,{headers: header2});