【问题标题】:Trying to get user timeline from twitter using application-only authentication尝试使用仅应用程序身份验证从 Twitter 获取用户时间线
【发布时间】:2015-01-31 11:56:18
【问题描述】:

我正在尝试在 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');
}

我正确地取回了令牌(我假设是这样,因为我得到了一个长字符串)。

但是当我尝试向用户时间线发出请求时,我收到一个 ioError Error opening URL 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen%5Fname=kamcknig&count=2' 这让我认为该 URL 格式错误,但根据我看到的所有内容,它似乎是正确的。

另外,我现在只是在 Flash IDE 中测试它。

谁能帮忙??

此后,我在 Chrome 中使用了 POSTMAN 扩展程序并输入了 url,以及带有我收到的不记名令牌的 Authorization 标头,并且请求在 POSTMAN 中工作!

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

【问题讨论】:

    标签: actionscript-3 flash twitter


    【解决方案1】:

    好吧,经过我所有的研究,这似乎是不可能的。

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

    就我而言,这是不可能的。

    【讨论】:

      猜你喜欢
      • 2016-09-22
      • 2015-06-10
      • 2013-06-13
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      相关资源
      最近更新 更多