2014-03-06 30 views
1

我一直在打獵幾個小時,似乎無法找到任何特定於我的設置的信息,所以在這裏。Angular&Twitter REST API

我正在使用MEAN堆棧,並希望在我的角度應用程序中使用Twitter API。我有所有必需的密鑰,並使用Node在服務器端觸發一個twitter api驗證,然後傳遞我獲得的令牌以響應我的角頁面。我希望能夠使用此令牌從角度服務向api發出請求。我正在努力工作的請求是獲取給定用戶的配置文件對象。下面附上了我的服務方法。我運行它時得到的錯誤是不允許的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; 
    } 
}; 
}]); 
+0

錯誤似乎是Twitter不允許跨域請求。它看起來像他們支持JSONP,所以你可以使用'$ http.jsonp' – Ian

+0

JSONP是xdomain解決方案 – maurycy

回答

1

只是爲了將來參考,如在規定maurycy的回答評論{和作爲我自己試圖從Angular獲得推文而沒有成功},最好的方法是從後端獲取它們。

1

我相信你應該使用$ http.jsonp與JSON_CALLBACK來得到它的工作,它不會與$ http.get發生肯定

+0

我以前試過,得到400錯誤請求錯誤。經過仔細檢查,看起來好像我在發出請求之前設置的標題並未實際發送。我會再看看這個,是我在配置變量中設置它們的方式嗎?我見過一些使用這種方法的例子。 – Mark

+0

我別往心裏去這樣: 它就像 angular.module( '對myApp',在模塊定義的函數[//依賴注入(若有)],函數($ httpProvider){$ httpProvider.defaults.headers。 post ['Content-Type'] ='application/x-www-form-urlencoded; charset = utf-8'; $ httpProvider.defaults.headers.common ['X-Requested-With'] ='xmlhttprequest'; }) – maurycy

+0

不會設置默認的所有我的HTTP請求,包括我設置的任何頭文件?我有其他的HTTP請求,我可以給其他API設置不同的頭文件。 – Mark