由于 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 获取最近用户状态的最简单/最短的方法是什么?
重要提示: 截至 2018 年年中,获取 twitter API 令牌的过程变得更加官僚化。我花了 一个多星期 的时间才获得一组 API 令牌,这是一个开源项目,适用于在 Packagist 上安装超过 120 万 次、在 Github 上安装超过 1.6k 星的你们,理论上应该是更高的优先级. 如果您的任务是使用 twitter API 进行工作,则必须考虑到这个潜在的极长等待时间。还可以考虑其他社交媒体渠道,例如 Facebook 或 Instagram,并提供这些选项,因为检索其代币的过程是即时的。
重要提示: 截至 2018 年年中,获取 twitter API 令牌的过程变得更加官僚化。我花了 一个多星期 的时间才获得一组 API 令牌,这是一个开源项目,适用于在 Packagist 上安装超过 120 万 次、在 Github 上安装超过 1.6k 星的你们,理论上应该是更高的优先级.
如果您的任务是使用 twitter API 进行工作,则必须考虑到这个潜在的极长等待时间。还可以考虑其他社交媒体渠道,例如 Facebook 或 Instagram,并提供这些选项,因为检索其代币的过程是即时的。
注意:这些文件在 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 类中,因此发出您需要的请求非常简单。
这使用 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" );
确保将您从上面的应用程序中获得的密钥放在各自的空间中。
接下来,您需要选择一个要向其发出请求的 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 证书。谷歌也是你的朋友。