使用 $http 检索 Twitter 用户时间线的简单方法
Simple method to retrieve Twitter User Timeline with $http
我需要使用 angular...
访问 Twitter 用户时间线
所有键都是正确的,它在 php/curl 中工作,但我无法让它在 angular 中工作。我正在使用 oauth-signature-js,然后是 $http 请求。我想让它尽可能简单。
ng 控制器:
app.controller('twitterController', function($scope, $http){
// VARIABLES
var screen_name = 'grapax_be';
var count = 1;
var consumer_key = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
var consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var oauth_access_token = 'xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var oauth_access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var oauth_timestamp = Math.round((new Date()).getTime() / 1000.0);
var oauth_nonce = oauth_timestamp;
var oauth_signature_method = 'HMAC-SHA1';
var oauth_version = '1.0'
// GENERATE OAUTH SIGNATURE
var httpMethod = 'GET';
var url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
var parameters = {
oauth_consumer_key : consumer_key,
oauth_token : oauth_access_token,
oauth_nonce : oauth_nonce,
oauth_timestamp : oauth_timestamp,
oauth_signature_method : oauth_signature_method,
oauth_version : oauth_version,
};
var oauth_signature = oauthSignature.generate(httpMethod, url, parameters, consumer_secret, oauth_access_token_secret, { encodeSignature: true });
// HTTP REQUEST
var authorization_string = "OAuth "
+ 'oauth_consumer_key="' + consumer_key + '", '
+ 'oauth_nonce="' + oauth_nonce + '", '
+ 'oauth_signature="' + oauth_signature + '", '
+ 'oauth_signature_method="' + oauth_signature_method + '", '
+ 'oauth_timestamp="' + oauth_timestamp + '", '
+ 'oauth_token="' + oauth_access_token + '", '
+ 'oauth_version="' + oauth_version + '"';
$http.jsonp('https://api.twitter.com/1.1/statuses/user_timeline.json', {
headers: {'Authorization': authorization_string},
params:{
count: count,
screen_name: screen_name
}
}).success(function(res){ console.log('res:', res) });
});
这仍然是错误 400。
这里是plunker
欢迎任何提示、问题、评论....
谢谢!
约翰
Headers不能在jsonp请求中设置。一种解决方案是使用服务器上的 http 客户端而不是浏览器来实现这一点。
自己进一步回答:
- Headers无法在jsonp请求中设置
- 在服务器端使用 Apache/WP,最好坚持使用
php/cURL 请求,并用简单的 $http.get() 调用它
Angular 集成。
顺便说一下,这个 PHP/cURL 方法很管用
伟大的 :
http://iag.me/socialmedia/build-your-first-twitter-app-using-php-in-8-easy-steps/
我需要使用 angular...
访问 Twitter 用户时间线所有键都是正确的,它在 php/curl 中工作,但我无法让它在 angular 中工作。我正在使用 oauth-signature-js,然后是 $http 请求。我想让它尽可能简单。
ng 控制器:
app.controller('twitterController', function($scope, $http){
// VARIABLES
var screen_name = 'grapax_be';
var count = 1;
var consumer_key = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
var consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var oauth_access_token = 'xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var oauth_access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var oauth_timestamp = Math.round((new Date()).getTime() / 1000.0);
var oauth_nonce = oauth_timestamp;
var oauth_signature_method = 'HMAC-SHA1';
var oauth_version = '1.0'
// GENERATE OAUTH SIGNATURE
var httpMethod = 'GET';
var url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
var parameters = {
oauth_consumer_key : consumer_key,
oauth_token : oauth_access_token,
oauth_nonce : oauth_nonce,
oauth_timestamp : oauth_timestamp,
oauth_signature_method : oauth_signature_method,
oauth_version : oauth_version,
};
var oauth_signature = oauthSignature.generate(httpMethod, url, parameters, consumer_secret, oauth_access_token_secret, { encodeSignature: true });
// HTTP REQUEST
var authorization_string = "OAuth "
+ 'oauth_consumer_key="' + consumer_key + '", '
+ 'oauth_nonce="' + oauth_nonce + '", '
+ 'oauth_signature="' + oauth_signature + '", '
+ 'oauth_signature_method="' + oauth_signature_method + '", '
+ 'oauth_timestamp="' + oauth_timestamp + '", '
+ 'oauth_token="' + oauth_access_token + '", '
+ 'oauth_version="' + oauth_version + '"';
$http.jsonp('https://api.twitter.com/1.1/statuses/user_timeline.json', {
headers: {'Authorization': authorization_string},
params:{
count: count,
screen_name: screen_name
}
}).success(function(res){ console.log('res:', res) });
});
这仍然是错误 400。
这里是plunker
欢迎任何提示、问题、评论.... 谢谢!
约翰
Headers不能在jsonp请求中设置。一种解决方案是使用服务器上的 http 客户端而不是浏览器来实现这一点。
自己进一步回答:
- Headers无法在jsonp请求中设置
- 在服务器端使用 Apache/WP,最好坚持使用 php/cURL 请求,并用简单的 $http.get() 调用它 Angular 集成。
顺便说一下,这个 PHP/cURL 方法很管用 伟大的 : http://iag.me/socialmedia/build-your-first-twitter-app-using-php-in-8-easy-steps/