使用AJAX调用Twitter时出现400错误

4
我正在开发一个网页,可以让你搜索你所在地区的 Twitter 用户。你在搜索框中输入一个名字,它会返回该城市50英里范围内与该名字匹配的用户(城市始终相同)。
我遇到了身份验证问题,然后我找到了oauth.io。我使用它进行身份验证,看起来它正在工作。但当我搜索时,我的 Twitter 请求返回400错误。我不确定我做错了什么。我已经查看了oauth.io文档,但没有找到任何有用信息。
这是代码的一部分,用于获取用户在表单字段中输入的值:
// Click function
  $('.user-getter').submit(function(event) {
      // prevent form refresh
      event.preventDefault();
      // zero out results if previous search has run
      $('.user-results').html('');
      // Get the values of what the person entered in search
      var query = $(this).find("input[name='user_search']").val();
      // Run function to send API request to Twitter
      getUser(query);
  }); // end click function

这是调用授权并发送ajax请求的代码部分:

var getUser = function(query) {

  OAuth.initialize('oMQua1CuWerqGKRwqVkzDx5uijo')
  OAuth.popup('twitter').done(function(twitterData) {

    $.ajax({
      type: "GET",
      url: "https://api.twitter.com/1.1/users/search.json?&geocode=42.94003620000001,-78.8677924,50mi&q=" + query,
      dataType: "jsonp"
    });

    console.log( "Data Saved: " + twitterData ); // can see in inspector tab under Network

  }); // end oAuth popup
};

现在,我只想在控制台中查看结果。

1个回答

5
使用OAuth.io向Twitter API发出请求时,您需要使用OAuth.io Javascript SDK,而不是直接使用$.ajax(OAuth.io Javascript SDK在幕后使用$.ajax的语法)。
OAuth.initialize('oMQua1CuWerqGKRwqVkzDx5uijo')
OAuth.popup('twitter').done(function(twitterData) {
    twitterData.get('/1.1/users/search.json', {
         data: {
             q: query
         }
    }).done(function(search) {
         //result of the search here
         console.log(search);
    }).fail(function(error) {
         //error management here
    });
})

SDK会在后台为您完成所有艰难的事情:代理HTTP请求,注入所有必要的OAuth凭据(oauth_token、oauth_token_secret、signature、nonce、timestamp等)。
请查看以下jsfiddles:http://jsfiddle.net/uz76E/10/ 希望这可以帮助您。

谢谢。我该如何添加地理编码以将搜索限制在我的区域内?地理编码:42.94003620000001,-78.8677924,50英里。 - amylynn83
1
这似乎是 /users/search.json 不允许地理编码,但您可以使用其他端点,如 /search/tweets.json:https://dev.twitter.com/docs/api/1.1/get/search/tweets - bumpmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接