2

我使用以下代码请求在网站上为客户显示最新推文列表:

if (file_exists( 'twitter.json' ))
{
    $file = file_get_contents( 'twitter.json');
    $data = json_decode($file);
    if ($data->timestamp > (time() - 60 * 60) ) // if timestamp is NOT older than an hour
    {
        $twitter_result = $data->twitter_result;
    }
    else
    {
        $twitter_result = file_get_contents('http://api.twitter.com/1/statuses/user_timeline.json?q=@Twitter&rpp=1&screen_name=Twitter&count=1');
        if( $twitter_result === false) /* something went wrong with API request */
        {
            $twitter_result = $data->twitter_result;
        }
        else
        {
            $json = array ('twitter_result' => $twitter_result, 'timestamp' => time());
            file_put_contents( 'twitter.json', json_encode($json) );
        }
    }

    header("content-type:application/json");
    if($_GET['callback'])
    {
        echo $_GET['callback'] . '(' . $twitter_result . ')';
    }
    else
    {
        echo $twitter_result;
    }

    exit;
}
else
{
    echo 'twitter.json does not exist!';

    exit;
}

然而,由于 1.0 API 被贬值,它将不再工作!我已经尝试让它与 1.1 API 一起使用,但我不明白如何像文档中所说的那样实现身份验证。谁能指出我正确的方向?如果可能,我希望对上述代码进行最少的更改。谢谢。

我试过例如:

https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=2&oauth_token=123&oauth_token_secret=123

令牌和秘密在哪里 123 但这也不起作用?

4

2 回答 2

3

看看这个图书馆 STTwitter

你可以使用方法

- (void)getUserTimelineWithScreenName:(NSString *)screenName
                     successBlock:(void(^)(NSArray *statuses))successBlock
                       errorBlock:(void(^)(NSError *error))errorBlock;

它适用于新版本的 API (1.1)

于 2013-09-18T07:44:30.130 回答
2

您需要更改的只是来自以下位置的 URL:

http://api.twitter.com/1/statuses/user_timeline.json?q=@Twitter&rpp=1&screen_name=Twitter&count=1

https://api.twitter.com/1.1/statuses/user_timeline.json?q=@Twitter&rpp=1&screen_name=Twitter&count=1

身份验证已添加到 1.1,您需要注册一个应用程序才能使其工作。

于 2013-09-09T00:13:51.217 回答