1

使用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
}

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

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

4

1 回答 1

2

查看 PHP 手册的异常部分,该库广泛使用它们。

基本上它们看起来像这样:

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

该类OauthException是库用于每次抛出的内容。

编辑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 实例的 http_code 代码属性设置为响应的 http 状态,如果不是 200 则表示错误。

编辑1:

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

为方便起见TwitterOauthException,还引入了一个新的 Exception 子类,该子类库抛出的每个异常都是该异常的子类。

于 2012-07-15T18:17:19.217 回答