小编典典

使用 Twitter API 1.1 版检索 user_timeline 的最简单 PHP 示例

all

由于 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 获取最近用户状态的最简单/最短的方法是什么?


阅读 83

收藏
2022-04-20

共1个答案

小编典典

重要提示: 截至 2018 年年中,获取 twitter API 令牌的过程变得更加官僚化。我花了 一个多星期 的时间才获得一组 API
令牌,这是一个开源项目,适用于在 Packagist 上安装超过 120 万 次、在 Github 上安装超过 1.6k
星的你们,理论上应该是更高的优先级.

如果您的任务是使用 twitter API 进行工作,则必须考虑到这个潜在的极长等待时间。还可以考虑其他社交媒体渠道,例如 Facebook 或
Instagram,并提供这些选项,因为检索其代币的过程是即时的。


所以你想使用 Twitter v1.1 API?

注意:这些文件在 GitHub 上

1.0 版 将很快被弃用
,并且不允许未经授权的请求。所以,这里有一篇文章可以帮助你做到这一点,还有一个 PHP 类可以让你的生活更轻松。

1. 创建开发者账号: 在 Twitter 上为自己设置一个开发者账号

您需要访问官方 Twitter 开发者网站并注册开发者帐户。这是请求 v1.1 API 的 免费 且必要的步骤。

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

什么?您认为您可以提出未经身份验证的请求吗?不适用于 Twitter 的 v1.1
API。您需要访问http://dev.twitter.com/apps并单击“创建应用程序”按钮。

在此处输入图像描述

在此页面上,填写您想要的任何详细信息。对我来说,这并不重要,因为我只是想发出大量阻止请求以摆脱垃圾邮件追随者。关键是您将为自己获取一组用于您的应用程序
的唯一键。

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

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

这里有一些关于这些令牌用途的信息。

3. 创建访问令牌 :您需要这些令牌才能成功请求

OAuth请求一些令牌。因此,您需要为您生成它们。

在此处输入图像描述

点击底部的“创建我的访问令牌”。然后,一旦您再次滚动到底部,您将拥有一些新生成的密钥。您需要从该页面获取四个先前标记的密钥以进行 API
调用,因此请在某处记下它们。

4.更改访问级别 :您不想要只读,是吗?

如果您想适当地使用此
API,如果您正在使用GET请求进行标准数据检索以外的任何操作,则需要将您的设置更改为
Read & Write。

在此处输入图像描述

选择页面顶部附近的“设置”选项卡。

在此处输入图像描述

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

您可以在此处阅读有关Twitter
使用的应用程序权限模型的更多信息。


5. 编写访问 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"
);

确保将您从上面的应用程序中获得的密钥放在各自的空间中。

接下来,您需要选择一个要向其发出请求的 URL。Twitter 有他们的 API
文档
来帮助您选择哪个 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 都说明了您可以传递给它的内容。如果我们使用上面的“blocks” 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!我希望有人觉得它有用;我知道我做到了(我将它用于循环中的批量阻塞)。

此外,对于那些在 Windows 上遇到 SSL
证书问题的人,请查看这篇文章。这个库在后台使用
cURL,所以你需要确保你已经设置了你的 cURL 证书。谷歌也是你的朋友。

2022-04-20