【问题标题】:(401 Authorization Required) on Twitter API requestTwitter API 请求上的(需要 401 授权)
【发布时间】:2014-08-04 12:12:19
【问题描述】:

我正在尝试基于this tutorial 使用 AngularJS 向 Twitter API 发出一个简单的请求,但我收到此错误:

"GET http://search.twitter.com/search.json?callback=angular.callbacks._0&q=angularjs 401 (Authorization Required)"

代码:

$scope.twitter = $resource('http://search.twitter.com/:action',
    {action:'search.json', q: 'angularjs', callback:'JSON_CALLBACK'},
    {get:{method:'JSONP'}}
);

它是否与以下语句有关(取自Twitter API docs)?

401 - Unauhtorized - (...) 在其他情况下也会返回,例如对 API v1 的所有调用 端点现在返回 401(改用 API v1.1)。

为什么会出现此错误?通过使用http://search.twitter.com 作为资源,这是否意味着我使用的是最新的 API (v1.1)?我可以选择要访问的 API 吗?如何?

如果我使用 http://api.twitter.com 作为资源,则会收到 403 错误:

Failed to load resource: the server responded with a status of 403 (Forbidden)

根据Twitter API docs,这意味着

(...) This code is used when requests are being denied due to update limits.

这没有意义,因为我只尝试了几十次......我很困惑。

谢谢

【问题讨论】:

    标签: angularjs twitter jsonp http-status-code-403 http-status-code-401


    【解决方案1】:

    您好,我自己刚刚完成了 Twitter API 的集成,我就是这样做的:

    1. 在 twitter 上创建应用程序
    2. HERE下载twitteroauth PHP SDK
    3. 使用以下代码创建一个名为 twitter.php 的文件:

    twitter.php:

    include_once "lib/twitteroauth.php";
    
    class Twitter {
        private $consumerKey = "YourConsumerKey";
        private $consumerSecret = "YourConsumerSecret";
        private $token = "AppToken";
        private $tokenSecret = "AppTokenSecret";
    
        function __construct() {
            if(isset($_GET['page'])) {
                $this->getTweets($_GET['page']);
            }
        }
        //In my case i just wanted to get Tweets
        private function getTweets ($page) {
            $connection = $this->getConnectionWithAccessToken();
            echo json_encode($connection->get("statuses/user_timeline", array("count" => 5, "page" => $page)));
        }
    
        private function getConnectionWithAccessToken() {
            return new TwitterOAuth($this->consumerKey, $this->consumerSecret, $this->token, $this->tokenSecret);
        }
    }
    $twitter = new Twitter();
    

    Angular 服务/工厂:

    var url = "http://yourwebsite.com/twitter.php";
    var page = 1;
    $http.get(url, {
            params: {
                page : page //Optional params, but necesary for the example to work
            }
        })
        .success(function (response) {
            //Do something with the response
            page++;
        });
    

    就是这样,只需添加您的私人日期,例如 consumerKey 和 Token,它就会起作用(在此示例中,调用 API 以获取一些推文)。对于其他 API 命令参考 twitter 的 API 文档,您可以找到 HERE

    祝你好运

    【讨论】:

    • 谢谢!我会尽快尝试的——现在我有点睡眠不足,我刚要离开工作。但是,简单看一下您的答案,实现一个简单的 API 请求真的有必要吗?干杯
    • 好的,如果您有任何问题,请告诉我。是的,就是这样
    【解决方案2】:

    不知道这是否有帮助,但 Twitter 有一个很棒的工具可以在您开始编写代码之前探索 twiiter API。 Twitter Console。显然,在控制台上进行粗略搜索会显示需要授权。另外,它会向您显示 Twitter API 对您的查询等的响应。如果您想要像我这样的具体细节,这将非常有帮助。

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 2015-07-19
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      相关资源
      最近更新 更多