重要提示:截至2018年年中,获得twitter API代币的过程变得更加官僚化。我花了一个多工作周的时间才获得一组API令牌,这是一个开源项目,为你们的家伙和女孩提供超过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请求执行标准数据检索以外的任何事情,你需要将你的设置更改为“读写”。

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

为您的应用程序提供读/写访问权限,然后点击底部的“更新”。
你可以在此处阅读有关 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 都声明了您可以传递给它的内容。如果我们使用如上所述的“块”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 证书。谷歌也是你的朋友。