最佳答案
我试图在React Native中使用fetch
从产品搜索API获取信息。我已经获得了适当的访问令牌,并已将其保存到状态,但似乎无法在授权报头中为GET请求传递它。
以下是我目前所了解到的:
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模块的数据this.state
的clientToken
属性,使其等于接收到的访问令牌。getPosts
,它应该返回一个包含Product Hunt当前帖子数组的响应。我能够验证访问令牌正在被接收,并且this.state
正在作为其clientToken
属性接收它。我还能够验证getPosts
正在运行。
我收到的错误如下:
{"error":"unauthorized_oauth", "error_description":"请提供有效的访问令牌。关于如何授权api请求,请参阅我们的api文档。还请确保您需要正确的作用域。例如“private public”用于访问私有端点。"}
我一直在努力消除这样一个假设,即我在授权头中以某种方式没有正确地传递访问令牌,但似乎无法找出确切的原因。