Javascript 节点post请求正在获取未经授权的服务器状态,但客户端获取api未被授权
在我的前端执行以下提取请求时,我将获得所需的Javascript 节点post请求正在获取未经授权的服务器状态,但客户端获取api未被授权,javascript,node.js,express,post,Javascript,Node.js,Express,Post,在我的前端执行以下提取请求时,我将获得所需的类型和id值 export const getUserProfile = () => { return ( fetch( "https://api.spotify.com/v1/me", { headers: {"Authorization": "Bearer " + user_id} }) .then(response => { return response.json()
类型
和id
值
export const getUserProfile = () => {
return (
fetch(
"https://api.spotify.com/v1/me", {
headers: {"Authorization": "Bearer " + user_id}
})
.then(response => {
return response.json()
})
.then(data => {
console.log(data.type)
console.log(data.id)
})
)
}
知道您不能在节点中使用fetchapi,我使用npm安装请求
包获取节点服务器上的数据
request.post(authOptions, function(error, response, body) {
var access_token = body.access_token
let postInfo = {
url: 'https://api.spotify.com/v1/me',
headers: {
"Authoriztion": "Bearer " + access_token
},
json: true
}
request.post(postInfo, function(error, response, body) {
const route = body.type
const current_user_id = body.id
console.log(body)
let uri = process.env.FRONTEND_URI || `http://localhost:3000/${route}/${current_user_id}`
res.redirect(uri + '?access_token=' + access_token)
})
})
这样做的目的是在调用res.redirect
时将客户端发送到用户的主页。但是,当客户端被重定向时,url是http://localhost:3000/undefined/undefined?accesss_token={some token}
当查看值未定义的原因时,我console.log(body)
得到
{
error: {
status: 401,
message: 'No token provided'
}
}
但是我可以在记录响应时看到包含了令牌
\u header:'POST/v1/me HTTP/1.1\r\n授权:Bearer{some token}=\r\nhost:api.spotify.com\r\n接受:application/json\r\n内容长度:0\r\n连接:close\r\n\r\n'
我可以理解为什么我的值未定义,但为什么我在节点中获得未经授权的状态,而不是在使用FetchAPI的客户端上?我还注意到urlaccess\u令牌
与服务器记录的令牌不匹配
以下是我正在使用的文档:
Github文件:如果您在服务器代码中使用
节点获取
,您的API与获取
类似,这只是猜测,而不是(新缓冲区(访问令牌).toString('base64'))
只需尝试访问\u令牌即可
-即不要使用base64it@Robbie在执行此操作时,我注意到服务器记录的是与客户端url相同的access\u令牌。不过我仍然得到了未经授权的401。听起来base64不是必需的-我不知道为什么它仍然是401-您是否确保承载
和访问令牌之间仍然有一个空格字符?消息是否仍然未提供令牌
?还是变了?@Robbie是的,有一个空格字符。如果您想查看并查看是否存在其他问题,我将使用显示整个文件的github页面更新我的问题。看起来像是拼写错误。您将授权
拼写错误为授权
-我在github中对提交进行了评论-在您的SO帖子中,您拼写正确。