我试图fetch
在React Native中使用以从Product Hunt API获取信息。我已经获得了正确的访问令牌并将其保存到State,但是似乎无法在GET请求的Authorization标头中传递它。
这是我到目前为止的内容:
var Products = React.createClass({
getInitialState: function() {
return {
clientToken: false,
loaded: false
}
},
componentWillMount: function () {
fetch(api.token.link, api.token.object)
.then((response) => response.json())
.then((responseData) => {
console.log(responseData);
this.setState({
clientToken: responseData.access_token,
});
})
.then(() => {
this.getPosts();
})
.done();
},
getPosts: function() {
var obj = {
link: 'https://api.producthunt.com/v1/posts',
object: {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + this.state.clientToken,
'Host': 'api.producthunt.com'
}
}
}
fetch(api.posts.link, obj)
.then((response) => response.json())
.then((responseData) => {
console.log(responseData);
})
.done();
},
我对代码的期望如下:
- 首先,我将
fetch
使用导入的API模块中的数据访问令牌 - 之后,我将设置
clientToken
属性this.state
等于接收到的访问令牌。 - 然后,我将运行
getPosts
它将返回一个响应,其中包含来自Product Hunt的一系列当前帖子。
我能够验证是否已接收到访问令牌并将this.state
其作为其clientToken
属性接收。我也可以验证它getPosts
是否正在运行。
我收到的错误如下:
{“ error”:“ unauthorized_oauth”,“ error_description”:“请提供有效的访问令牌。有关如何授权api请求的信息,请参阅我们的api文档。请确保您需要正确的范围。例如\” private public \ “用于访问私有端点。”}
我一直在进行以下假设:我不知道如何在授权标头中正确传递访问令牌,但似乎无法弄清楚原因。
2
正如本SO中所指出的,标头旨在为小写(一些服务器尊重这一点,而其他服务器则不这样做。)我之所以分享是因为我不了解自己而被它咬住了(浪费了尝试调试问题的时间。)不幸的是,如此多的项目,示例和文章似乎并不尊重这一点。
—
tj
@tj标头名称不区分大小写,而这正是您所链接问题上公认的+最佳答案的意思。
—
coreyward