重要提示:截至2018年中期,获取Twitter API令牌的流程变得更加官僚化。对于一个在Packagist上拥有超过120万次安装和在Github上拥有1.6k星的开源项目而言,我花费了超过一个工作周的时间才获得一组API令牌,理论上这应该是更高优先级的。如果你被分配使用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并单击“创建应用程序”按钮。
![Enter image description here](https://istack.dev59.com/gxmnH.webp)
在这个页面上,填写任何你想要的细节。对我来说,这并不重要,因为我只是想制作一堆块请求以摆脱垃圾关注者。关键是你要为自己获得{一组唯一的密钥},用于你的应用程序。
创建应用程序的目的是为自己(和 Twitter)提供一组密钥。它们是:
- 使用者密钥
- 使用者密钥密码
- 访问令牌
- 访问令牌密码
这里有一些关于这些令牌的信息。
3. 创建访问令牌:你需要这些来进行成功的请求
OAuth 请求几个令牌。所以你需要让它们为你生成。
![Enter image description here](https://istack.dev59.com/gEbUQ.webp)
请点击底部的“创建我的访问令牌”。然后再次滚动到底部,您将获得一些新生成的密钥。您需要从此页面获取四个先前标记的密钥以进行API调用,因此请在某处做好记录。如果您要使用此API,除了使用
GET请求进行标准数据检索之外,您需要将设置更改为读写权限。
![Enter image description here](https://istack.dev59.com/hRHyp.webp)
选择页面顶部附近的“设置”选项卡。
![Enter image description here](https://istack.dev59.com/pW1tl.webp)
请给你的应用程序授予读/写访问权限,然后在底部点击“更新”按钮。
您可以在此处
阅读有关Twitter使用的应用程序权限模型的更多信息。
5. 编写访问API的代码: 我已经为您完成了大部分工作。
我将上面的代码进行了一些修改和更改,并将其组合成了一个PHP类,因此非常容易进行所需的请求。
这使用了
OAuth和
Twitter v1.1 API,以及我创建的类,您可以在下面找到。
require_once('TwitterAPIExchange.php');
$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 = 'https://api.twitter.com/1.1/blocks/create.json';
$requestMethod = 'POST';
在文档中,每个URL都说明了可以传递哪些内容。如果我们使用上面的“blocks” URL,我可以传递以下POST参数:
$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证书。Google也是您的好朋友。