简化版 / twitter
带OAuth的Twitter API库
Requires
- php: >=5.4
- simplon/helper: 0.11.*
- simplon/request: 0.4.*
README
: : :: :: ::`. .-""-. .':: : `.`-._ : '>': _.-'.' : :`. `=._`'. .''_.=' .': : `=._ `- '' -' _.-'.: :`=._`=. .='_.=': `.._`. .'_..' `-.: :.-' : : `:.__.:' : : -'= -'= Simplon/Twitter
简介
什么是简化版/twitter?
这是一个库,可以帮助您与Twitter的API进行通信。特别是它将允许您生成访问令牌
以及发布和与推文交互。
有依赖项吗?
- PHP 5.4
- CURL
安装
通过composer轻松安装。还不知道composer是什么?请在此处了解更多信息。
{ "require": { "simplon/twitter": "*" } }
要求
为了与Twitter的API交互,您需要注册您的应用程序以接收一个消费者密钥
和一个消费者密钥
。在Twitter的应用程序管理中注册您的应用程序。
最终,您应该会收到类似以下示例的内容
消费者密钥(apiKey): E3yaXX2LvOFXXXXikwMUyvlQD
消费者密钥(apiSecret): WkhXXZPbyFdLiHqDCkSEqJodxm5XdIPLuFNzs1sXXdv09ZXXX7
请求访问令牌
以下行将描述如何生成一对访问令牌
,这对于与Twitter的API通信是必需的。如果发生错误,将抛出TwitterException
。
1. OAuth请求令牌
只需遵循以下代码。您应该会收到一个包含OauthToken
等内容的类(OauthRequestTokenVo
)。通过传递提到的令牌调用Twitter::getAuthenticationUrl()
。结果,您将收到一个URL
- 将用户重定向到此URL。用户将最终到达Twitter的认证页面,并授予您访问其个人资料的权限。
require __DIR__ . '/vendor/autoload.php'; // your app's consumer tokens $apiKey = 'E3yaXX2LvOFXXXXikwMUyvlQD'; $apiSecret = 'WkhXXZPbyFdLiHqDCkSEqJodxm5XdIPLuFNzs1sXXdv09ZXXX7'; // where should twitter redirect the user? $callbackUrl = 'https://yourdomain.com/twitter'; // twitter session with your credentials $twitter = new \Simplon\Twitter\Twitter($apiKey, $apiSecret); try { $oauthRequestTokenVo = $twitter->requestOauthRequestToken($callbackUrl); echo "Twitter redirect url:\n"; echo $twitter->getAuthenticationUrl($oauthRequestTokenVo->getOauthToken()); echo "\n\n"; } catch (\Simplon\Twitter\TwitterException $e) { var_dump($e->getMessage()); }
2. OAuth访问令牌
当用户授予您权限后,Twitter将重定向到您先前定义的回调URL
,并附加两个类似以下示例的GET参数:?oauth_token=AuNV9QXXXXXXelElAAABT0C1Sw4&oauth_verifier=UpVzmg0tiNXXXwuddcmIxgIb5PVuSn
。
您需要这两个参数来接收用户的个人资料数据
和访问令牌
,以便与他的/她的Twitter账户交互。接收到的数据将以OauthAccessTokenVo
类形式返回。
您需要两个访问令牌:请确保保存所有数据以供以后使用。例如,存储在数据库中。
require __DIR__ . '/vendor/autoload.php'; // your app's consumer tokens $apiKey = 'E3yaXX2LvOFXXXXikwMUyvlQD'; $apiSecret = 'WkhXXZPbyFdLiHqDCkSEqJodxm5XdIPLuFNzs1sXXdv09ZXXX7'; // retrieved params $oauthToken = 'AuNV9QXXXXXXelElAAABT0C1Sw4'; $oauthVerifier = 'UpVzmg0tiNXXXwuddcmIxgIb5PVuSn'; // twitter session with your credentials $twitter = new \Simplon\Twitter\Twitter($apiKey, $apiSecret); try { // retrieve access tokens and profile data from user $oauthAccessTokenVo = $twitter->requestOauthAccessToken($oauthToken, $oauthVerifier); var_dump($oauthAccessTokenVo); // var_dump result would look something like this: // class Simplon\Twitter\OauthAccessTokenVo#4 (5) { // protected $oauthToken => // string(50) "3197060333-xxxx4chX0Sega3iMF0r55PP96BAGyXXXFTwjpgW" // protected $oauthTokenSecret => // string(45) "FeIpfZ1qK4jTaKXXXXTaQAlfny0dFgBV4K15vbnFd3XX" // protected $userId => // string(10) "1234567899" // protected $screenName => // string(12) "foobar user" // protected $xAuthExpires => // string(1) "0" // } } catch (\Simplon\Twitter\TwitterException $e) { var_dump($e->getMessage()); }
这就是全部内容。您可以尝试与Twitter的API进行交互。
与Twitter的API交互
以下示例将向您展示如何发布、读取和销毁推文。请访问Twitter的开发中心以查看所有API资源。
简化版/Twitter现在也支持媒体上传
。一个示例可以在其他示例的末尾找到。
1. 发布一条推文
require __DIR__ . '/vendor/autoload.php'; // your app's consumer tokens $apiKey = 'E3yaXX2LvOFXXXXikwMUyvlQD'; $apiSecret = 'WkhXXZPbyFdLiHqDCkSEqJodxm5XdIPLuFNzs1sXXdv09ZXXX7'; // user's prior retrieved access tokens $accessToken = '3197060333-xxxx4chX0Sega3iMF0r55PP96BAGyXXXFTwjpgW'; $accessSecret = 'FeIpfZ1qK4jTaKXXXXTaQAlfny0dFgBV4K15vbnFd3XX'; // twitter session with your credentials $twitter = new \Simplon\Twitter\Twitter($apiKey, $apiSecret); try { // bind user account to twitter session $twitter->setOauthTokens($accessToken, $accessSecret); // publish tweet $response = $twitter->post('statuses/update', ['status' => 'My first tweet!']); // should hold all tweet specific data in an array var_dump($response); // $response['id'] holds the tweet ID } catch (\Simplon\Twitter\TwitterException $e) { var_dump($e->getMessage()); }
2. 读取一条推文
您需要一个推文ID
才能加载其数据。
require __DIR__ . '/vendor/autoload.php'; // your app's consumer tokens $apiKey = 'E3yaXX2LvOFXXXXikwMUyvlQD'; $apiSecret = 'WkhXXZPbyFdLiHqDCkSEqJodxm5XdIPLuFNzs1sXXdv09ZXXX7'; // user's prior retrieved access tokens $accessToken = '3197060333-xxxx4chX0Sega3iMF0r55PP96BAGyXXXFTwjpgW'; $accessSecret = 'FeIpfZ1qK4jTaKXXXXTaQAlfny0dFgBV4K15vbnFd3XX'; // twitter session with your credentials $twitter = new \Simplon\Twitter\Twitter($apiKey, $apiSecret); try { // bind user account to twitter session $twitter->setOauthTokens($accessToken, $accessSecret); // load tweet data by ID $response = $twitter->get('statuses/show/633611781445959680'); // should hold all tweet specific data in an array var_dump($response); } catch (\Simplon\Twitter\TwitterException $e) { var_dump($e->getMessage()); }
3. 销毁一条推文
您需要一个推文ID
才能销毁它。
require __DIR__ . '/vendor/autoload.php'; // your app's consumer tokens $apiKey = 'E3yaXX2LvOFXXXXikwMUyvlQD'; $apiSecret = 'WkhXXZPbyFdLiHqDCkSEqJodxm5XdIPLuFNzs1sXXdv09ZXXX7'; // user's prior retrieved access tokens $accessToken = '3197060333-xxxx4chX0Sega3iMF0r55PP96BAGyXXXFTwjpgW'; $accessSecret = 'FeIpfZ1qK4jTaKXXXXTaQAlfny0dFgBV4K15vbnFd3XX'; // twitter session with your credentials $twitter = new \Simplon\Twitter\Twitter($apiKey, $apiSecret); try { // bind user account to twitter session $twitter->setOauthTokens($accessToken, $accessSecret); // destroy tweet by ID $response = $twitter->get('statuses/destroy/633611781445959680'); // should hold all tweet specific data in an array var_dump($response); } catch (\Simplon\Twitter\TwitterException $e) { var_dump($e->getMessage()); }
4. 上传并发布一张图片
require __DIR__ . '/vendor/autoload.php'; // your app's consumer tokens $apiKey = 'E3yaXX2LvOFXXXXikwMUyvlQD'; $apiSecret = 'WkhXXZPbyFdLiHqDCkSEqJodxm5XdIPLuFNzs1sXXdv09ZXXX7'; // user's prior retrieved access tokens $accessToken = '3197060333-xxxx4chX0Sega3iMF0r55PP96BAGyXXXFTwjpgW'; $accessSecret = 'FeIpfZ1qK4jTaKXXXXTaQAlfny0dFgBV4K15vbnFd3XX'; // twitter session with your credentials $twitter = new \Simplon\Twitter\Twitter($apiKey, $apiSecret); try { // bind user account to twitter session $twitter->setOauthTokens($accessToken, $accessSecret); // upload image $response = $twitter->upload('http://example-image.png'); // should hold all media specific data in an array var_dump($response); // $response['media_id'] holds the media ID // publish tweet w/ media $response = $twitter->post('statuses/update', ['status' => 'Crazy summer vacation!', 'media_ids' => $response['media_id']); // should hold all tweet specific data in an array var_dump($response); // $response['id'] holds the tweet ID } catch (\Simplon\Twitter\TwitterException $e) { var_dump($e->getMessage()); }
许可证
简化版/twitter可以在MIT许可证的条款下自由分发。
版权(c)2015 Tino Ehrich (tino@bigpun.me)
在此特此授予任何获得本软件及其相关文档文件(以下简称“软件”)副本的个人免费使用软件的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许将软件提供给他人以便他们这样做,但须遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,与软件或软件的使用或其他处理有关。