Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取Reddit API的OAuth令牌时不支持的授权类型_Javascript_Api_Oauth 2.0_Reddit - Fatal编程技术网

Javascript 获取Reddit API的OAuth令牌时不支持的授权类型

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

我正在尝试按照以下步骤为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.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('&')
}