【发布时间】:2016-03-07 07:57:22
【问题描述】:
我一直在尝试连接AngularJS 和Twitter API。这一切都始于在 AngularJS 推特搜索中遵循John Lindquist's video 上的说明。基本上是下面的代码
var app = angular.module("MyApp", ["ngResource"]);
function MyCtrl($scope, $resource) {
var TwitterAPI = $resource("http://search.twitter.com/search.json",
{ callback: "JSON_CALLBACK" },
{ get: { method: "JSONP" }});
$scope.search = function() {
$scope.searchResult = TwitterAPI.get({ q: $scope.searchTerm });
};
}
但问题是,这会生成 401 Unauthorized。谷歌上的一些搜索显示,自从本教程发布以来,Twitter 已经改变了它的 API。我发现另一篇关于使用OAuth2 with AngularJS to access Twitter 的文章。其中有以下
var consumerKey = encodeURIComponent('<your consumer key>')
var consumerSecret = encodeURIComponent('<your consumer secret>');
var credentials = Base64.encode(consumerKey + ':' + consumerSecret);
// Twitters OAuth service endpoint
var twitterOauthEndpoint = $http.post(
'https://api.twitter.com/oauth2/token'
, "grant_type=client_credentials"
, {headers: {'Authorization': 'Basic ' + credentials, 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}}
);
然而这也以控制台上的以下错误告终
> OPTIONS https://api.twitter.com/oauth2/token 405 (Method Not Allowed)
> XMLHttpRequest cannot load https://api.twitter.com/oauth2/token. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:3000' is therefore not allowed access.
我已经走了这么远,但不知道接下来要做什么才能使用来自 twitter 的 $resource 获取搜索结果。不知道这是否有帮助,但我也在使用 Firebase。
【问题讨论】:
-
错误的意思是 Twitter 不允许通过来自任何其他域的浏览器使用该 API。
-
@user1066946 是否有本地测试?
标签: angularjs api twitter oauth-2.0 firebase