Important Note: As of mid-2018, the process to get twitter API tokens became a lot more bureaucratic. It has taken me over one working week to be provided a set of API tokens, and this is for an open source project for you guys and girls with over 1.2 million installations on Packagist and 1.6k stars on Github, which theoretically should be higher priority.
If you are tasked with working with the twitter API for your work, you must take this potentially extremely long wait-time into account. Also consider other social media avenues like Facebook or Instagram and provide these options, as the process for retrieving their tokens is instant.
所以您想使用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类中,这样就可以非常简单地发出所需的请求。
它使用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 certs。谷歌也是你的朋友。