Actionscript 3 尝试使用仅应用程序身份验证从twitter获取用户时间线

Actionscript 3 尝试使用仅应用程序身份验证从twitter获取用户时间线,actionscript-3,flash,twitter,Actionscript 3,Flash,Twitter,我正在尝试让一个简单的应用程序在Flash中运行,以查看用户的推文 我“相信”我已正确获得访问令牌 var bearerToken:String; var consumerKey:String = <CONSUMER_KEY>; var consumerSecret:String = <CONSUMER_SECRET>; //encode key and secret according to twitter's website var bearerTokenCrede

我正在尝试让一个简单的应用程序在Flash中运行,以查看用户的推文

我“相信”我已正确获得访问令牌

var bearerToken:String;
var consumerKey:String = <CONSUMER_KEY>;
var consumerSecret:String = <CONSUMER_SECRET>;

//encode key and secret according to twitter's website
var bearerTokenCredentials = Base64.encode(consumerKey + ':' + consumerSecret);

//setup my request variables, according to twitters dev info, use client_credentials for grant_type    
var requestVars:URLVariables = new URLVariables();
requestVars.grant_type = 'client_credentials';
//according to twitter, the url to use for application-only authenticaton
var url:String = 'https://api.twitter.com/oauth2/token';

//setup a URLRequest object with the proper headers, according to twitter, need the Authorization header to be 'Basic <encoded key/secret>' and the proper Content-Type header
var request:URLRequest = new URLRequest(url);
request.requestHeaders = [new URLRequestHeader('Authorization', 'Basic ' + bearerTokenCredentials),
                          new URLRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8')];
request.method = URLRequestMethod.POST;
request.data = requestVars;

//send the request to authenticate
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onBearerTokenRequest);
urlLoader.load(request);

function onBearerTokenRequest(e:Event):void
{
    trace('onRequestComplete');

    //this works and i get a token
    bearerToken = JSON.decode(e.currentTarget.data).access_token;

    //HERE IS WHERE I CAN'T FIGURE OUT WHAT'S WRONG
    var url:String =     'https://api.twitter.com/1.1/statuses/user_timeline.json'
    var urlVariables = new URLVariables();
    urlVariables.screen_name = 'rivercitygraphx';
    urlVariables.count = 2;

    var request:URLRequest = new URLRequest(url);
    request.method = "GET";
    request.requestHeaders = [new URLRequestHeader('Authorization', 'Bearer ' + bearerToken)];
    request.data = urlVariables;

    var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE, onTimelineRequestComplete);
    urlLoader.load(request);
}

function onTimelineRequestComplete(e:Event):void
{
    trace('onTimelineRequestComplete');
}
var bearerToken:String;
var consumerKey:String=;
var consumerSecret:String=;
//根据twitter网站对密钥和密码进行编码
var bearerTokenCredentials=Base64.encode(consumerKey+':'+consumerSecret);
//设置我的请求变量,根据twitters dev info,使用客户端\u凭据作为授权类型
var requestVars:URLVariables=新的URLVariables();
requestVars.grant_type='client_credentials';
//根据twitter的说法,仅用于应用程序身份验证的url
var url:String='1〕https://api.twitter.com/oauth2/token';
//根据twitter的说法,设置具有适当标题的URLRequest对象需要授权标题为“基本”和适当的内容类型标题
var-request:URLRequest=新的URLRequest(url);
request.requestHeaders=[new URLRequestHeader('Authorization'、'Basic'+BealerTokenCredentials),
新的URLRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=UTF-8');
request.method=URLRequestMethod.POST;
request.data=requestVars;
//发送请求以进行身份验证
var urlLoader:urlLoader=新的urlLoader();
urlLoader.addEventListener(Event.COMPLETE,onBearerTokenRequest);
加载(请求);
函数onBearerTokenRequest(e:事件):void
{
跟踪(“onRequestComplete”);
//这有效,我得到一个代币
bearerToken=JSON.decode(e.currentTarget.data).access\u令牌;
//这就是我无法找出问题所在的地方
var url:String='1〕https://api.twitter.com/1.1/statuses/user_timeline.json'
var urlVariables=新的urlVariables();
urlVariables.screen_name='rivercitygraphx';
urlVariables.count=2;
var-request:URLRequest=新的URLRequest(url);
request.method=“GET”;
request.requestHeaders=[新的URLRequestHeader('Authorization','Bearer'+bearerToken)];
request.data=urlVariables;
var urlLoader:urlLoader=新的urlLoader();
urlLoader.addEventListener(Event.COMPLETE、onTimelineRequestComplete);
加载(请求);
}
函数onTimelineRequestComplete(e:事件):void
{
跟踪(“onTimelineRequestComplete”);
}
我正确地取回了令牌(因为我得到了一个长字符串,所以我假设是这样)

但是,当我尝试请求用户时间线时,打开URL“”时出现ioError错误,这使我认为URL的格式不正确,但根据我看到的每一次,它似乎都是正确的

而且,现在我只是在FlashIDE中测试这个

有人能帮忙吗

此后,我在Chrome中使用了POSTMAN扩展,并输入了url和授权头,其中包含我收到的承载令牌,请求在POSTMAN中工作


所以我唯一能想到的就是Flash IDE。有人知道为什么会这样,或者这是否真的是问题所在吗?

好吧,经过我的研究,看起来这是不可能的

我发现一个库使用套接字连接,可以做我想做的事情,但是文件太大了。AS3中的套接字类不是安全套接字,因此我无法使用它。而且SecureSocket类也不能使用,因为我仅限于Flash Player 10及更早版本

就我而言,这是不可能的