atymic/laravel-twitter

此包已被 弃用 并不再维护。作者建议使用https://github.com/atymic/twitter 包。

Laravel 的 Twitter API

2.2.7 2019-11-05 23:13 UTC

This package is auto-updated.

Last update: 2019-11-08 03:48:44 UTC


README

Latest Version on Packagist Software License Build Status StyleCI Total Downloads

Laravel 5.5+ & 6.x 的 Twitter API,基于 thujohn/twitter

您需要在 应用程序管理 中创建应用程序并创建您的访问令牌。

从 thujohn/twitter 分离 & 路线图

主要包再次被维护,因此此分支不再需要并将被存档。https://github.com/atymic/twitter

遗憾的是 thujohn/twitter 已不再维护。因此,我们在这里创建了一个分支。计划是在主存储库之外继续开发此包,如果再次得到维护,则合并我们的更改。

该包的大致路线图如下

2.x

目前,我们将保留原始包命名空间,并且不破坏向后兼容性。您只需将 composer 依赖从 thujohn/twitter 更改为 atymic/laravel-twitter 即可使用此分支。

3.x

如果原始包继续缺乏维护,计划将主版本号提升到 3x。我们将切换包命名空间,并对包进行一些破坏性更改以提高包的质量。我们还将发布详细的迁移指南,使其尽可能容易。

安装

composer require atymic/laravel-twitter

配置

运行 php artisan vendor:publish --provider="Thujohn\Twitter\TwitterServiceProvider" 并使用您的信息修改配置文件。

/config/ttwitter.php

在 Laravel 5 中,编辑 config.php 文件很简单 - 事实上,您甚至不需要触摸它!只需将以下内容添加到您的 .env 文件中,您就可以开始了

TWITTER_CONSUMER_KEY=
TWITTER_CONSUMER_SECRET=
TWITTER_ACCESS_TOKEN=
TWITTER_ACCESS_TOKEN_SECRET=

特殊参数

format : object|json|array (default:object)

函数

账户

  • getSettings() - 返回认证用户的设置(包括当前趋势、地理和时间信息)。
  • getCredentials()
  • postSettings() - 更新认证用户的设置。
  • postSettingsDevice() - 为认证用户设置 Twitter 发送更新到的设备。将设备参数设置为 none 将禁用短信更新。
  • postProfile() - 设置用户可以在设置页面“账户”选项卡下设置的某些值。只有指定的参数将更新。
  • postBackground() - 更新认证用户的个人资料背景图片。此方法还可以用于启用或禁用个人资料背景图片。
  • postProfileImage() - 更新认证用户的个人资料图片。请注意,此方法期望原始的多部分数据,而不是图片的 URL。
  • destroyUserBanner() - 删除上传的个人资料横幅。成功时返回 HTTP 200。
  • postUserBanner() - 代表认证用户上传个人横幅。为了获得最佳效果,请在上传用户的 Users 对象中包含一个 profile_banner_url 节点。

封禁

  • getBlocks() - 返回认证用户封禁的用户对象集合。
  • getBlocksIds() - 返回认证用户封禁的用户 ID 数组。
  • postBlock() - 封禁指定的用户,使其不能关注认证用户。此外,被封禁的用户不会出现在认证用户的提及或时间轴中(除非被其他用户转发)。如果存在关注或好友关系,则会被销毁。
  • destroyBlock() - 对认证用户指定 ID 参数中的用户取消封禁。成功时返回请求格式的未封禁用户。如果封禁实施前存在关系,则不会被恢复。

私信

  • getDmsOut() - 返回认证用户发送的最新的 20 条私信。包括发送者和接收者用户的详细信息。每次调用最多可请求 200 条私信,最多 800 条已发送的私信。
  • getDm() - 返回由 ID 参数指定的单条私信。类似于 /1.1/direct_messages.format 请求,此方法将包括发送者和接收者的用户对象。
  • getDmsIn() - 返回发送给认证用户的最新的 20 条私信。包括发送者和接收者用户的详细信息。每次调用最多可请求 200 条私信,并且只能使用此端点获取最新的 200 条私信。
  • destroyDm() - 销毁由必需 ID 参数指定的私信。认证用户必须是指定私信的接收者。
  • postDm() - 从认证用户向指定用户发送新的私信。需要用户和文本参数,并且必须为 POST 请求。成功时以请求格式返回发送的消息。

点赞

  • getFavorites() - 返回认证用户或指定用户最近的 20 条点赞的推文。
  • destroyFavorite() - 作为认证用户取消点赞 ID 参数指定的状态。成功时以请求格式返回取消点赞的状态。
  • postFavorite() - 作为认证用户点赞 ID 参数指定的状态。成功时返回点赞的状态。

好友关系

  • getNoRters() - 返回当前认证用户不希望接收转发的用户 ID 集合。
  • getFriendsIds() - 返回每个关注指定用户的用户的用户 ID 的分页集合。
  • getFollowersIds() - 返回每个关注指定用户的用户的用户 ID 的分页集合。
  • getFriendshipsIn() - 返回每个对认证用户有未处理关注请求的用户 ID 的集合。
  • getFriendshipsOut() - 返回认证用户有未处理关注请求的每个受保护用户的用户 ID 的集合。
  • postFollow() - 允许认证用户关注 ID 参数指定的用户。
  • postUnfollow() - 允许认证用户取消关注 ID 参数指定的用户。
  • postFollowUpdate() - 允许启用或禁用来自指定用户的转发和设备通知。
  • getFriendships() - 返回任意两个用户之间关系的详细信息。
  • getFriends() - 返回指定用户关注的所有用户对象集合(也称为“朋友”)。
  • getFollowers() - 返回关注指定用户的所有用户对象集合。
  • getFriendshipsLookup() - 返回认证用户与提供的逗号分隔的最多100个screen_names或user_ids之间的关系的列表。连接的值可以是:following、following_requested、followed_by、none、blocking、muting。

地理位置

  • getGeo() - 返回关于已知地点的所有信息。
  • getGeoReverse() - 给定纬度和经度,搜索最多20个可以用作更新状态时的place_id的地点。
  • getGeoSearch() - 搜索可以附加到statuses/update的地点。给定纬度和经度对、IP地址或名称,此请求将返回所有有效的地点列表,这些地点可以用作更新状态时的place_id。
  • getGeoSimilar() - 定位与给定坐标附近名称相似的地点。从概念上讲,您会使用此方法首先获取已知地点列表进行选择。然后,如果所需的地点不存在,请发送POST geo/place请求创建一个新地点。响应中包含的令牌是创建新地点所需令牌。

帮助

  • postSpam() - 将指定的用户报告为Twitter上的垃圾账户。此外,代表认证用户执行POST blocks / create等价操作。
  • getHelpConfiguration() - 返回Twitter当前使用的配置,包括twitter.com的slugs(不是用户名)、最大照片分辨率和t.co URL长度。
  • getHelpLanguages() - 返回Twitter支持的语言列表以及Twitter支持的语言代码。
  • getHelpPrivacy() - 返回Twitter的隐私政策。
  • getHelpTos() - 返回Twitter的服务条款。注意:这些条款与开发者政策不同。
  • getAppRateLimit() - 返回指定资源家族方法当前的速率限制。

列表

  • getLists() - 返回认证用户或指定用户订阅的所有列表,包括他们自己的列表。用户通过user_id或screen_name参数指定。如果没有提供用户,则使用认证用户。
  • getListStatuses() - 返回指定列表成员创作的推文的时间线。默认包含转推。使用include_rts=false参数省略转推。
  • destroyListMember() - 从列表中删除指定的成员。认证用户必须是列表的所有者才能从列表中删除成员。
  • getListsMemberships() - 返回指定用户被添加到的列表。如果没有提供user_id或screen_name,则返回认证用户的成员资格。
  • getListsSubscribers() - 返回指定列表的订阅者。只有当认证用户拥有指定列表时,才会显示私有列表的订阅者。
  • postListSubscriber() - 订阅认证用户到指定列表。
  • getListSubscriber() - 返回指定列表的订阅者。只有当认证用户拥有指定列表时,才会显示私有列表的订阅者。
  • destroyListSubscriber() - 从指定列表中取消订阅认证用户。
  • postListCreateAll() - 通过指定以逗号分隔的成员ID或用户名列表,将多个成员添加到列表中。认证用户必须拥有要添加成员的列表。请注意,列表的成员数不能超过5000人,并且使用此方法一次最多只能添加100名成员。
  • getListMember() - 检查指定的用户是否是指定列表的成员。
  • getListMembers() - 返回指定列表的成员。只有认证用户拥有指定列表时,才会显示私有列表成员。
  • postListMember() - 向列表中添加成员。认证用户必须拥有列表才能添加成员。请注意,列表的成员数不能超过5000人。
  • destroyList() - 删除指定的列表。认证用户必须拥有列表才能删除。
  • postListUpdate() - 更新指定的列表。认证用户必须拥有列表才能更新。
  • postList() - 为认证用户创建一个新的列表。请注意,每个账户最多只能创建20个列表。
  • getList() - 返回指定的列表。只有认证用户拥有指定列表时,才会显示私有列表。
  • getListSubscriptions() - 获取指定用户订阅的列表集合,默认每页20个列表。不包括用户的自己的列表。
  • destroyListMembers() - 通过指定以逗号分隔的成员ID或用户名列表,从列表中删除多个成员。认证用户必须拥有列表才能删除成员。请注意,列表的成员数不能超过500人,并且使用此方法一次最多只能删除100名成员。
  • getListOwnerships() - 返回指定Twitter用户拥有的列表。只有认证用户也是列表的所有者时,才会显示私有列表。

媒体

  • uploadMedia() - 将媒体(图片)上传到Twitter,用于推文或Twitter托管卡。

搜索

  • getSearch() - 返回与指定查询相关的一组相关推文。
  • getSavedSearches() - 返回认证用户的已保存搜索查询。
  • getSavedSearch() - 获取由给定ID表示的已保存搜索的信息。正在验证的用户必须是请求的已保存搜索ID的所有者。
  • postSavedSearch() - 为认证用户创建一个新的已保存搜索。用户最多只能有25个已保存搜索。
  • destroySavedSearch() - 删除认证用户的已保存搜索。正在验证的用户必须是正在被删除的已保存搜索ID的所有者。

状态

  • getMentionsTimeline() - 返回认证用户的20个最近提及(包含用户@screen_name的推文)。
  • getUserTimeline() - 返回由screen_name或user_id参数指定的用户最近发布的推文集合。
  • getHomeTimeline() - 返回认证用户及其关注的用户最近发布的推文和转推文的集合。主页是大多数用户与Twitter服务互动的核心。
  • getRtsTimeline() - 返回认证用户创作的已被他人转推的最近推文。
  • getRts() - 返回由id参数指定的推文的100个最近转推的集合。
  • getTweet() - 返回由id参数指定的单个推文。推文的作者也将嵌入到推文中。
  • destroyTweet() - 删除由必需的ID参数指定的状态。正在验证的用户必须是指定状态的所有者。如果成功,将返回被删除的状态。
  • postTweet() - 更新认证用户的当前状态,也称为发推。
  • postRt() - 转发一条推文。返回包含转发详情的原始推文。
  • getOembed() - 返回单个推文,通过推文网页URL或推文ID指定,以oEmbed兼容的格式。当页面上包含Twitter的小部件JavaScript时,返回的HTML片段将自动识别为嵌入的推文。
  • getRters() - 返回最多100个属于转发指定推文的用户的用户ID。
  • getStatusesLookup() - 返回最多100条推文的完整推文对象,这些对象通过传递给id参数的逗号分隔值指定。

趋势

  • getTrendsPlace() - 如果提供了特定WOEID的趋势信息,则返回前10个热门话题。
  • getTrendsAvailable() - 返回Twitter有趋势话题信息的地理位置。
  • getTrendsClosest() - 返回Twitter有趋势话题信息的地理位置,最接近指定的位置。

用户

  • getUsersLookup() - 返回最多100个用户的完整用户对象,这些对象通过传递给user_id和/或screen_name参数的逗号分隔值指定。
  • getUsers() - 返回关于指定用户(通过必需的user_id或screen_name参数指定)的多种信息。如果可能,将返回作者最近的一条推文。
  • getUsersSearch() - 提供一个简单的基于相关性的搜索界面,用于Twitter上的公共用户账户。尝试通过主题兴趣、全名、公司名称、位置或其他标准进行查询。不支持精确匹配搜索。
  • getUserBanner() - 返回指定用户个人资料横幅的可用尺寸变体的映射。如果用户未上传个人资料横幅,则将提供HTTP 404。此方法可以代替在个人资料图像和横幅中描述的返回在用户对象中的profile_banner_url字符串操作。
  • muteUser() - 对于认证用户,静音ID参数中指定的用户。
  • unmuteUser() - 对于认证用户,取消静音ID参数中指定的用户。
  • mutedUserIds() - 返回认证用户已静音的数字用户ID数组。
  • mutedUsers() - 返回认证用户已静音的用户对象数组。
  • getSuggesteds() - 访问Twitter建议用户列表中给定类别的用户。
  • getSuggestions() - 访问Twitter的建议用户列表。此操作返回建议用户类别的列表。可以使用该类别在GET users / suggestions / :slug中获取该类别的用户。
  • getSuggestedsMembers() - 访问Twitter建议用户列表中给定类别的用户,如果它们不是受保护用户,则返回他们的最新状态。

辅助函数

Linkify : 将URL、@用户名、标签转换为链接。$tweet的类型可以是对象、数组或文本。通过发送对象或数组,该方法将扩展链接(t.co)。

Twitter::linkify($tweet);

Ago : 将日期转换为差异(2小时前)

Twitter::ago($timestamp);

LinkUser : 通过用户对象(例如$tweet->user)或id/string生成特定用户的链接。

Twitter::linkUser($user);

LinkTweet : 生成特定推文的链接。

Twitter::linkTweet($tweet);

示例

返回由screen_name或user_id参数指定的用户发布的最新推文集合。

Route::get('/userTimeline', function()
{
	return Twitter::getUserTimeline(['screen_name' => 'thujohn', 'count' => 20, 'format' => 'json']);
});

返回认证用户及其关注的用户最近发布的推文和转发集合。

Route::get('/homeTimeline', function()
{
	return Twitter::getHomeTimeline(['count' => 20, 'format' => 'json']);
});

返回认证用户最近X条提及(包含用户@screen_name的推文)。

Route::get('/mentionsTimeline', function()
{
	return Twitter::getMentionsTimeline(['count' => 20, 'format' => 'json']);
});

更新认证用户的当前状态,也称为推文。

Route::get('/tweet', function()
{
	return Twitter::postTweet(['status' => 'Laravel is beautiful', 'format' => 'json']);
});

用媒体更新认证用户的当前状态。

Route::get('/tweetMedia', function()
{
	$uploaded_media = Twitter::uploadMedia(['media' => File::get(public_path('filename.jpg'))]);
	return Twitter::postTweet(['status' => 'Laravel is beautiful', 'media_ids' => $uploaded_media->media_id_string]);
});

通过电子邮件获取用户凭证。

$credentials = Twitter::getCredentials([
    'include_email' => 'true',
]);

在上面的操作中,您需要将字符串 "true" 传递,而不是布尔值。布尔值将被转换为 1,Twitter 会忽略这个值。

这也假设您已经正确设置了与 Twitter 的权限。您在设置 Twitter 应用程序时必须选择 '获取用户电子邮件',仅传递值是不够的。

用Twitter登录

Route::get('twitter/login', ['as' => 'twitter.login', function(){
	// your SIGN IN WITH TWITTER  button should point to this route
	$sign_in_twitter = true;
	$force_login = false;

	// Make sure we make this request w/o tokens, overwrite the default values in case of login.
	Twitter::reconfig(['token' => '', 'secret' => '']);
	$token = Twitter::getRequestToken(route('twitter.callback'));

	if (isset($token['oauth_token_secret']))
	{
		$url = Twitter::getAuthorizeURL($token, $sign_in_twitter, $force_login);

		Session::put('oauth_state', 'start');
		Session::put('oauth_request_token', $token['oauth_token']);
		Session::put('oauth_request_token_secret', $token['oauth_token_secret']);

		return Redirect::to($url);
	}

	return Redirect::route('twitter.error');
}]);

Route::get('twitter/callback', ['as' => 'twitter.callback', function() {
	// You should set this route on your Twitter Application settings as the callback
	// https://apps.twitter.com/app/YOUR-APP-ID/settings
	if (Session::has('oauth_request_token'))
	{
		$request_token = [
			'token'  => Session::get('oauth_request_token'),
			'secret' => Session::get('oauth_request_token_secret'),
		];

		Twitter::reconfig($request_token);

		$oauth_verifier = false;

		if (Input::has('oauth_verifier'))
		{
			$oauth_verifier = Input::get('oauth_verifier');
			// getAccessToken() will reset the token for you
			$token = Twitter::getAccessToken($oauth_verifier);
		}

		if (!isset($token['oauth_token_secret']))
		{
			return Redirect::route('twitter.error')->with('flash_error', 'We could not log you in on Twitter.');
		}

		$credentials = Twitter::getCredentials();

		if (is_object($credentials) && !isset($credentials->error))
		{
			// $credentials contains the Twitter user object with all the info about the user.
			// Add here your own user logic, store profiles, create new users on your tables...you name it!
			// Typically you'll want to store at least, user id, name and access tokens
			// if you want to be able to call the API on behalf of your users.

			// This is also the moment to log in your users if you're using Laravel's Auth class
			// Auth::login($user) should do the trick.

			Session::put('access_token', $token);

			return Redirect::to('/')->with('flash_notice', 'Congrats! You\'ve successfully signed in!');
		}

		return Redirect::route('twitter.error')->with('flash_error', 'Crab! Something went wrong while signing you up!');
	}
}]);

Route::get('twitter/error', ['as' => 'twitter.error', function(){
	// Something went wrong, add your own error handling here
}]);

Route::get('twitter/logout', ['as' => 'twitter.logout', function(){
	Session::forget('access_token');
	return Redirect::to('/')->with('flash_notice', 'You\'ve successfully logged out!');
}]);

调试

首先在配置文件中启用调试。

然后您可以访问 logs() 方法。

try
{
	$response = Twitter::getUserTimeline(['count' => 20, 'format' => 'array']);
}
catch (Exception $e)
{
	// dd(Twitter::error());
	dd(Twitter::logs());
}

dd($response);