我正在尝试拨打Twitters API并获取我的推文,以便将其发布到我正在创建的网站上。
当我运行以下代码时,我收到错误。
XMLHttpRequest无法加载https://api.twitter.com/1.1/search/tweets.json?q=%SamSchaeferSays。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:3333”访问。响应有HTTP状态代码400.“和”bundle.js:30041未捕获(在承诺中)错误:网络错误。
我不熟悉不使用PHP的API调用 - 不知道我在这里做错了什么。
const tweet = 'https://api.twitter.com/1.1/search/tweets.json?q=%SamSchaeferSays';
function getUserTweet() {
return axios.get(`${tweet}`).then(function(response){
console.log(response.data)
console.log(response.status)
});
}
示例OAuth字符串
const DST = `OAuth oauth_consumer_key="${consumerKey}",
oauth_nonce="${}",
oauth_signature="${}",
oauth_signature_method="${}",
oauth_timestamp="${}",
oauth_token="${}",
oauth_version="1.0"
`;
答案 0 :(得分:-1)
400 Bad Request
错误表示服务器无法理解您的请求。在您的情况下,有一个拼写错误,阻止请求通过(额外%
)。试试这个:
const tweet = 'https://api.twitter.com/1.1/search/tweets.json?q=SamSchaeferSays';
function getUserTweet() {
return axios.get(`${tweet}`, { headers: { 'Authorization': 'YOUR_OAUTH_HEADER' } }).then(function(response){
console.log(response.data)
console.log(response.status)
});
}
这将解决400 Bad Request
错误,但您还不会收到任何数据。 Twitter API要求您授权您的请求。在their documentation中了解更多信息。
为了允许应用程序提供此信息,Twitter的API依赖于OAuth 1.0a协议。在非常简化的层面上,Twitter的实现要求需要授权的请求包含额外的HTTP授权标头,其中包含足够的信息来回答上面列出的问题。上面显示的HTTP请求的一个版本,修改为包含此标题,看起来像这样(通常Authorization标头需要在一行上,但在这里已经包装了易读性):