gpt4 book ai didi

javascript - 如何在 angularjs 中传递 twitter api 的授权 header 以获取用户时间线?

转载 作者:行者123 更新时间:2023-11-28 07:26:05 25 4
gpt4 key购买 nike

我尝试过以下代码,但它正在返回XMLHttpRequest 无法加载 https://api.twitter.com/1.1/statuses/home_timeline.json?screen_name=twitterapi 。请求的资源上不存在“Access-Control-Allow-Origin” header 。因此,不允许访问源“http://localhost:3000”。响应的 HTTP 状态代码为 400。

    function randomString(length, chars) {
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
return result;
} var app=angular.module('store',[]);app.controller('indexController', function($scope, $http) {
var unixtime=Math.round((new Date()).getTime() / 1000.0),
nonce=randomString(32,'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); var httpMethod = 'GET',
url = 'https://api.twitter.com/1.1/statuses/home_timeline.json',
parameters = {
oauth_consumer_key : 'AD6SEy1m3XkggNTuYw5SUl4dv',
oauth_nonce : nonce,
oauth_signature_method : 'HMAC-SHA1',
oauth_timestamp : unixtime,
oauth_token : '3131481153-I9k4ZvdnePO42lOH0EJQNQcAHoyim6XrFFzFk90',
oauth_version : '1.0',
screen_name:'twitterapi'
},
consumerSecret = 'xxxxxxx',
tokenSecret = 'xxxxxxx',

signature = oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret,
{ encodeSignature: true});
$http.get(url, {
headers: {
'Authorization':
'OAuth oauth_consumer_key="AD6SEy1m3XkggNTuYw5SUl4dv",' +
'oauth_signature_method="HMAC-SHA1",' +
'oauth_timestamp='+unixtime +
'oauth_nonce='+nonce +
'oauth_version="1.0",' +
'oauth_token="3131481153-I9k4ZvdnePO42lOH0EJQNQcAHoyim6XrFFzFk90",'+
'oauth_signature='+signature
},
params:{screen_name:'twitterapi'}}).success(function (data)
{
$scope.tweets = data;
}); });

最佳答案

由于 CORS,您收到此错误

您正在使用 $http.get 进行跨域调用,您需要将其更改为 $http.jsonp 并提供有效的 twitter api 回调

    function randomString(length, chars) {
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
return result;
} var app=angular.module('store',[]);app.controller('indexController', function($scope, $http) {
var unixtime=Math.round((new Date()).getTime() / 1000.0),
nonce=randomString(32,'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); var httpMethod = 'GET',
url = 'https://api.twitter.com/1.1/statuses/home_timeline.json',
parameters = {
oauth_consumer_key : 'AD6SEy1m3XkggNTuYw5SUl4dv',
oauth_nonce : nonce,
oauth_signature_method : 'HMAC-SHA1',
oauth_timestamp : unixtime,
oauth_token : '3131481153-I9k4ZvdnePO42lOH0EJQNQcAHoyim6XrFFzFk90',
oauth_version : '1.0',
screen_name:'twitterapi',
callback: 'twitterCallback'
},
consumerSecret = 'xxxxxxx',
tokenSecret = 'xxxxxxx',

signature = oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret,
{ encodeSignature: true});
$http.jsonp(url, {
headers: {
'Authorization':
'OAuth oauth_consumer_key="AD6SEy1m3XkggNTuYw5SUl4dv",' +
'oauth_signature_method="HMAC-SHA1",' +
'oauth_timestamp='+unixtime +
'oauth_nonce='+nonce +
'oauth_version="1.0",' +
'oauth_token="3131481153-I9k4ZvdnePO42lOH0EJQNQcAHoyim6XrFFzFk90",'+
'oauth_signature='+signature
},
params:{screen_name:'twitterapi'}}).success(function (data)
{
$scope.tweets = data;
}); });

关于javascript - 如何在 angularjs 中传递 twitter api 的授权 header 以获取用户时间线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29643327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com