由于Twitter API 1.0从June 11th 2013年起退役,下面的脚本不再有效.

// 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);
    }
}

如何以最少的代码获取用户_时间线(最近状态)?

我找到这个:https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline

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

有很多类,但在try 了几个之后,由于Twitter上的这些更新,它们似乎都不起作用,而且其中一些是非常高级的类,有很多我并不真正需要的功能.

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

推荐答案

Important Note:截至2018年年中,获取Twitter API令牌的过程变得更加官僚.我花了one working week多个时间才得到一套API令牌,这是为你们提供的一个开源项目,在Packagist上有超过1.2 million installations个,在Github上有1.6k个星,理论上这应该是更优先的.

如果你的任务是在工作中使用twitter API,你必须考虑到这一潜在的非常长的等待时间.还考虑其他社交媒体途径,如脸谱网或Instagram,并提供这些选项,因为检索他们的令牌的过程是即时的.


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

100

版本1.0、will soon be deprecated和未经授权的请求将不被允许.因此,这里有一篇文章可以帮助您做到这一点,同时还提供了一个PHP类,让您的生活变得更轻松.

1. Create a developer account:在推特上给自己打developer account

您需要访问Twitter开发人员官方网站并注册开发人员帐户. 这是请求V1.1API的free步,也是必要的一步.

2. Create an application:.在Twitter开发者网站上创建应用程序

什么你以为你可以提出未经认证的请求?而不是Twitter的v1.1 API.

Enter image description here

在这一页上,填写你想要的任何细节.对我来说,这无关紧要,因为我只是想发出大量阻止请求,以清除垃圾邮件关注者.重点是你将得到a set of unique keys个用于你的应用程序.

因此,创建一个应用程序的目的是给自己(和Twitter)一组密钥.这些是:

  • 消费者密钥
  • 消费者的秘密
  • 访问令牌
  • 访问令牌 secret

这里有一些关于这些 token 用途的信息here.

3. Create access tokens:你需要这些才能提出成功的请求

OAuth请求一些 token .所以你需要为你生成它们.

Enter image description here

单击底部的"创建我的访问令牌".然后,一旦再次滚动到底部,就会有一些新生成的键.对于您的API调用,您需要从该页面获取之前标记的四个键,因此请在某个地方记下它们.

4. Change access level:你不想要只读的,是吗?

如果您想要适当地使用此API,如果您正在执行使用GET个请求的标准数据检索之外的任何操作,则需要将您的设置更改为READ&;WRITE.

Enter image description here

Select 页面顶部附近的"设置"选项卡.

Enter image description here

授予您的应用程序读/写访问权限,然后点击底部的"更新".

你可以在这里找到Twitter使用的read more about the applications permission model个.


5. Write code to access the API:我已经为你做了大部分了

我将上面的代码(经过一些修改和更改)组合到一个PHP类中,这样发出所需的请求就非常简单.

它使用OAuthTwitter 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"
);

确保你把从上面的应用程序中获得的密钥放在各自的空间中.

接下来,你需要 Select 一个你想要请求的URL.Twitter有100帮助你 Select URL和请求类型(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都说明了您可以传递给它的内容.如果我们使用类似于上面的"block"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();

对于100个请求,仅此而已!

对于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();     

Final code example:一个简单的获取我的追随者列表的请求.

$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();  

100,归功于@lackovic10和@rivers!我希望有人觉得它有用;我知道我做到了(我用它在循环中进行批量阻塞).

此外,对于Windows上那些SSL证书有问题的用户,请查看this post.这个图书馆使用卷发,所以你需要确保你有卷发证书.谷歌也是你的朋友.

Php相关问答推荐

根据用户ID禁用WooCommerce checkout 下单按钮

如何使用PHP停止foreach循环中的重复项?

在保留唯一键值对的情况下高效合并嵌套数组

如何使用这种格式构建XML?

在WooCommerce中设置带有国家/地区和年份前缀的顺序序号

如何在PHP中出现弃用警告时触发错误?

将文件添加到存档,而不重建存档

在php中,方法之间的属性链接是如何工作的

Rappasoft Datatables V2(我想在另一个表具有相同值列时显示数据)

将购物车按钮重定向到Checkout-Wooccommerce

在WooCommerce存档页面中显示可变产品的库存变化属性

dyld[45923]:未加载库:/usr/local/opt/libavif/lib/libavif.15dylib

$this->;db->;update();CodIgnitor中的功能不工作

PHP 数组中第一级 node 到 XML 的唯一名称

WooCommerce 相关产品(按 children 类别)作为排名数学主要类别的后备

如何显示所有数组数据而不仅仅是最后的结果

simplexml_load_file 和 simplexml_load_string 返回具有不同编码的相同数据

提交仅包含活动详细信息选项卡表单的主表单

适当的时区处理 Laravel / Carbon

htaccess 无限循环问题