我正在尝试使用React Native中的fetch
从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();
},
我对我的代码的期望如下:
1.首先,我将使用导入的API模块中的数据fetch
一个访问令牌
1.之后,我将设置this.state
的clientToken
属性,使其等于接收到的访问令牌。
1.然后,我将运行getPosts
,它将返回一个响应,其中包含Product Hunt的当前帖子数组。
我可以验证是否正在接收访问令牌,以及this.state
是否正在将其作为其clientToken
属性接收。我还可以验证getPosts
是否正在运行。
我收到的错误如下:
{“error”:“unauthorized_oauth”,“error_description”:“请提供有效的访问标记。有关如何对API请求进行授权的信息,请参阅我们的API文档。另外,请确保您需要正确的作用域。例如,\“private public\”用于访问私有端点。"}
我一直在努力消除这样一种假设,即我在授权头中没有正确沿着访问令牌,但似乎无法找出确切的原因。
5条答案
按热度按时间9bfwbjaz1#
结果是我错误地使用了
fetch
方法。fetch
接受两个参数:一个API的端点,以及一个可包含主体和标头的可选对象。我把想要的对象 Package 在第二个对象中,这并没有给我带来任何想要的结果。
下面是它的高级外观:
我的选项对象的结构如下:
xuo3flqw2#
我也遇到了同样的问题,我使用django-rest-knox作为身份验证令牌。结果我的fetch方法没有任何问题,看起来像这样:
我在运行Apache。
对我来说解决这个问题的是在
wsgi.conf
中将WSGIPassAuthorization
更改为'On'
。我在AWS EC2上部署了一个Django应用程序,我使用Elastic Beanstalk来管理我的应用程序,所以在
django.config
中,我这样做:2ekbmq323#
如果您使用的是不记名令牌,下面的代码片段应该可以正常工作:
drkbr07n4#
laik7k3q5#
使用授权标头提取的示例: