如何用Abraham';推特用户库


How to catch errors or exceptions with Abraham's twitteroauth library?

使用https://github.com/abraham/twitteroauth:

function getTwitterFeed($token_array){
    require_once('twitteroauth/twitteroauth.php');
    $oauth_token = $token_array['access_token'];
    $oauth_token_secret = $token_array['access_token_secret'];
    $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $oauth_token, $oauth_token_secret);
    $response = $connection->get("statuses/user_timeline");
    //...do stuff with the response
}

我想捕捉身份验证问题(无效令牌或令牌机密)和/或"超出速率限制"的错误或异常。

我在任何地方都找不到有关此库错误处理的任何信息。我怎样才能做到这一点?

查看PHP手册的Exceptions部分,库会广泛使用它们。

基本上它们看起来是这样的:

try {
    // your code here
} catch (OAuthException $e) {
    // your error handling here
}

CCD_ 1类是库每次投掷所使用的类。

第0版:

不幸的是,从实际的twitter API返回的错误没有被库转换为异常,因此您必须检查get()和其他调用的返回值,并查找"error"键,错误将如下所示:

object(stdClass)[5]
   public 'error' => string 'Could not authenticate you.' (length=27)
   public 'request' => string '/1/account/verify_credentials.json?aauth_consumer_key=CONSUMER_KEY_HERE&oauth_nonce=cfbf6a55b26683750a166f14aeb5ed84&oauth_signature=c96MciQcODQD5jUAkyrAmSxXa0g%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1342379970&oauth_token=alma&oauth_version=1.0' (length=258)

它还将API实例的httpcode代码属性设置为响应的http状态,如果不是200,则表示错误。

第1版:

我已经创建了一个库的分支,它将为每个返回非200 HTTP状态的请求生成异常,异常的代码将是twitter返回的HTTP状态,消息就是消息(如果存在),twitter的HTTP错误代码列表将帮助解码错误。

为了方便起见,还引入了一个名为TwitterOauthException的新异常子类,库引发的每个异常都将这个异常子类化。