问题

由于Twitter API 1.0退役,因为 2013年6月11日,以下脚本不再工作.

// Create curl resource 
$ch = curl_init(); 
// Set url 
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/myscreenname.json?count=10"); 
// Return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
// $output contains the output string 
$output = curl_exec($ch); 
// Close curl resource to free up system resources 
curl_close($ch);

if ($output) 
{
    $tweets = json_decode($output,true);

    foreach ($tweets as $tweet)
    {
        print_r($tweet);
    }
}

如何获得使用最少代码的user_timeline(最近的状态)?

我发现这个: https://dev.twitter.com/ docs / api / 1.1 / get / statuses / user_timeline 但我得到以下错误:

"{"errors":[{"message":"Could not authenticate you","code":32}]}"

有很多类,但在尝试几个没有一个似乎工作,因为这些更新在Twitter,加上其中一些是相当高级的类,有很多功能,我真的不需要.

使用PHP获取最近用户状态的最简单/最简单的方法是什么?



解决方法

So you want to use the Twitter v1.1 API?

注意:这些文件位于GitHub .

版本1.0 即将停用 ,未经授权的请求不会被)允许.所以,这里有一个帖子,帮助你做到这一点,以及一个PHP类,使你的生活更轻松.

1. Create a developer account: Set yourself up a developer account on Twitter

您需要访问官方Twitter开发人员网站并注册一个开发人员帐户. 这是一个免费的必要步骤,可向v1.1 API发出请求.

2. Create an application: Create an application on the Twitter developer site

什么?你认为你可以做未经验证的请求?不与Twitter的v1.1 API. 您需要访问 http://dev.twitter.com/apps ,然后点击"创建应用"按钮.

在这里输入图片说明

在此页面上,填写所需的任何详细信息.对我来说,这没关系,因为我只是想加载阻止请求以摆脱垃圾邮件关注者.关键是你将要获得一组唯一键以用于您的应用程序.

因此,创建应用程序的目的是为自己(和Twitter)提供一组键.这些是:

  • The consumer key
  • The consumer secret
  • The access token
  • The access token secret

有关这些令牌的这里的一些信息.

3. Create access tokens: You'll need these to make successful requests

OAuth 请求了几个令牌.所以你需要为他们生成它们.

在这里输入图片说明

点击底部的"创建我的访问令牌".然后,一旦你再次滚动到底部,你会有一些新生成的键.您需要从此页面获取四个先前标记的键,以便您的API调用,所以请在某处记录.

4. Change access level: You don't want read-only, do you?

如果您想要使用此API,您需要将设置更改为"读取"和"如果您使用 GET 请求进行标准数据检索之外的任何操作,请填写.

在这里输入图片说明

选择页面顶部附近的"设置"标签.

在这里输入图片说明

为您的应用程式授予读取/写入权限,并按一下底部的[更新].

您可以详细了解Twitter在此处使用的应用程序权限模型.


5. Write code to access the API: I've done most of it for you

我将上面的代码与一些修改和更改合并到一个PHP类中,因此它非常容易满足您需要的请求.

这使用 OAuth Twitter v1.1 API 和我创建的类别,您可以在下面找到它.

require_once('TwitterAPIExchange.php');

/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
    'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

请务必将上述应用程式中提供的金钥放在各自的空白处.

接下来,您需要选择要发出请求的网址. Twitter有其 API文档 ,可帮助您选择哪个网址以及请求类型( POST或GET).

/** URL for REST request, see: https://dev.twitter.com/docs/api/1.1/ **/
$url = 'https://api.twitter.com/1.1/blocks/create.json';
$requestMethod = 'POST';

在文档中,每个URL都会说明您可以传递给它的内容.如果我们使用像上面的"块"URL,我可以传递以下POST参数:

/** POST fields required by the URL above. See relevant docs as above **/
$postfields = array(
    'screen_name' => 'usernameToBlock', 
    'skip_status' => '1'
);

现在您已经设置了要对API执行的操作,现在是发出实际请求的时候了.

/** Perform the request and echo the response **/
$twitter = new TwitterAPIExchange($settings);
echo $twitter->buildOauth($url, $requestMethod)
             ->setPostfields($postfields)
             ->performRequest();

对于 POST 请求,就是这样!

对于 GET 请求,它有点不同.这里有一个例子:

/** Note: Set the GET field BEFORE calling buildOauth(); **/
$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?username=J7mbo';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();     

最终代码示例:对于我的关注者列表的简单GET请求.

$url = 'https://api.twitter.com/1.1/followers/list.json';
$getfield = '?username=J7mbo&skip_status=1';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();  

我已将这些文件放在GitHub ,信用额度为@ lackovic10, @rivers!我希望有人发现它有用;我知道我做了(我用它在一个循环中的批量阻塞).




相关问题推荐