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