Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度及;twitterrestapi_Javascript_Angularjs_Twitter - Fatal编程技术网

Javascript 角度及;twitterrestapi

Javascript 角度及;twitterrestapi,javascript,angularjs,twitter,Javascript,Angularjs,Twitter,我已经搜索了几个小时了,似乎找不到任何特定于我的设置的信息,所以这里开始 我正在使用MEAN stack,希望在我的angular应用程序中使用Twitter API。我拥有所有必需的密钥,并在服务器端使用Node触发twitterapi身份验证,然后将获得的令牌传递给我的页面。我希望能够使用这个令牌从angular服务向api发出请求。我现在试图处理的请求是获取给定用户的profile对象。我在下面附上了我的服务方法。当我运行它时得到的错误是405方法不允许,不存在访问控制允许原始标头 ang

我已经搜索了几个小时了,似乎找不到任何特定于我的设置的信息,所以这里开始

我正在使用MEAN stack,希望在我的angular应用程序中使用Twitter API。我拥有所有必需的密钥,并在服务器端使用Node触发twitterapi身份验证,然后将获得的令牌传递给我的页面。我希望能够使用这个令牌从angular服务向api发出请求。我现在试图处理的请求是获取给定用户的profile对象。我在下面附上了我的服务方法。当我运行它时得到的错误是405方法不允许,不存在访问控制允许原始标头

angular.module('tms.system').factory('Twitter', ['$log', '$q', '$http', '$window', 'twitter', 'Global', function($log, $q, $http, $window, twitter, Global) {
return {
    findProfile: function(handle) {

        var deferred = $q.defer();
        var config = {
            timeout:3000,
            headers: {
                'Authorization': 'Bearer ' + Global.twitterToken,
                'X-Testing' : 'testing'
            }
        };

        $http.get('https://api.twitter.com/1.1/users/show.json?screen_name=' + handle, config).
            success(function(data) {
                $log.info(data);
                deferred.resolve(data);
            }).
            error(function(status) {
                $log.error(status);
            });

        return deferred.promise;
    }
};
}]);

我相信你应该使用$http.jsonp和一个JSON_回调来让它工作,这不会发生在$http.get上,请确定

只是为了将来的参考,正如maurycy的回答中所说的{作为我自己试图从Angular获得推文却没有成功},最好的方法是从后端获取它们。

错误似乎是Twitter不允许跨域请求。不过看起来它们支持JSONP,所以您可以使用
$http.JSONP
JSONP是xdomain解决方案,我之前已经尝试过了,得到了400个错误请求。仔细检查后,我在发出请求之前设置的标题看起来好像没有被发送。我再看一看,我在配置变量中设置它们的方式是推荐的方式吗?我见过一些使用该方法的示例。我个人是这样做的:它是模块定义中的函数,如angular.module('myApp',[//依赖项注入,如果有),function($httpProvider){$httpProvider.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded;charset=utf-8';$httpProvider.defaults.headers.common['x-Requested-With']='xmlhttprequest';})此设置是否会默认所有http请求包括我设置的任何头?我向其他API发出了其他http请求,这些请求可能设置了不同的头。结果表明,无论如何,您都不能修改JSONP请求的头,看起来我必须这样做,但需要结合一些服务器端解决方案。无论如何,谢谢你的帮助。