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 \ "プライベートエンドポイントにアクセスするため。"}
私はどういうわけか、認証ヘッダーでアクセストークンを適切に渡していないという前提に基づいて取り組んでいますが、その理由を正確に理解できていないようです。