Javascript 获取Reddit API的OAuth令牌时不支持的授权类型
我正在尝试按照以下步骤为RedditAPI获取OAuth令牌。我的reddit应用程序是一个已安装的应用程序,因此对于我的Javascript 获取Reddit API的OAuth令牌时不支持的授权类型,javascript,api,oauth-2.0,reddit,Javascript,Api,Oauth 2.0,Reddit,我正在尝试按照以下步骤为RedditAPI获取OAuth令牌。我的reddit应用程序是一个已安装的应用程序,因此对于我的grant\u类型我正在使用https://oauth.reddit.com/grants/installed_client 目前,我正在运行一个非常短的JS脚本来查询API并获取令牌: const APP\u ID='MY\u APP\u ID' const DEVICE_ID='跟踪_ID_20_到_30_字符' let form=new FormData() form
grant\u类型
我正在使用https://oauth.reddit.com/grants/installed_client
目前,我正在运行一个非常短的JS脚本来查询API并获取令牌:
const APP\u ID='MY\u APP\u ID'
const DEVICE_ID='跟踪_ID_20_到_30_字符'
let form=new FormData()
form.append('grant_type','https://oauth.reddit.com/grants/installed_client')
表单.append('device\u id',device\u id)
取('https://www.reddit.com/api/v1/access_token', {
方法:“POST”,
标题:新标题({
“内容类型”:“应用程序/x-www-form-urlencoded”,
'Authorization':`Basic${btoa(`${APP_ID}:`)}`,
}),
正文:表格})
.然后(HandlerResponse)
.then(功能(数据){
console.log(数据)
})
.catch(错误=>console.error(错误))
功能句柄响应(响应){
返回response.json()
}
问题在于FormData
对象的使用。在故障排除的早期阶段,我在Reddit上找到并决定使用它,但这对我不起作用
它以多部分/表单数据
的形式提交数据,而不是Reddit的OAuth服务器不喜欢的应用程序/x-www-form-urlencoded
。我编写了一个helper函数,根据该函数实现了以下技巧:
function urlEncode(data) {
let out = [];
for (let key in data) {
out.push(`${key}=${encodeURIComponent(data[key])}`);
}
return out.join('&')
}