hamzahassanm / laravel-social-auto-post
Laravel 社交媒体自动发布包
Requires
- laravel/framework: ^11.0
Requires (Dev)
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^11.3
This package is auto-updated.
Last update: 2024-09-07 11:42:53 UTC
README
一个 Laravel 包,用于在 Facebook 和 Telegram 等平台自动发布社交媒体内容。
支持的语言
安装
要安装此包,请运行以下命令
composer require hamzahassanm/laravel-social-auto-post
配置
安装包后,使用以下命令发布配置文件
php artisan vendor:publish --provider="HamzaHassanM\LaravelSocialAutoPost\SocialShareServiceProvider" --tag=autopost
此命令将在 config/autopost.php 文件中创建一个文件,您可以在其中配置社交媒体凭据和其他设置。
示例配置
在您的 config/autopost.php 文件中,添加您的 Facebook 和 Telegram 凭据
return [ 'facebook_access_token' => env('FACEBOOK_ACCESS_TOKEN'), 'facebook_page_id' => env('FACEBOOK_PAGE_ID'), 'facebook_api_version' => env('FACEBOOK_API_VERSION', 'v20.0'), 'telegram_bot_token' => env('TELEGRAM_BOT_TOKEN'), 'telegram_chat_id' => env('TELEGRAM_CHAT_ID'), 'telegram_api_base_url' => env('TELEGRAM_API_BASE_URL', 'https://api.telegram.org/bot'), ];
确保您已更新 .env 文件中的必要凭据
FACEBOOK_ACCESS_TOKEN=your_facebook_access_token
FACEBOOK_PAGE_ID=your_facebook_page_id
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
TELEGRAM_CHAT_ID=your_telegram_chat_id
使用方法
该包提供了两个门面,用于简单交互 Facebook 和 Telegram。
Facebook 方法
FaceBook 门面提供了以下方法
1. share(string $caption, string $url)
在您的 Facebook 页面上发布带有 URL 的状态更新。
use FaceBook; $caption = 'Check out this article!'; $url = 'https://example.com/post/123'; FaceBook::share($caption, $url);
2. shareImage(string $caption, string $image_url)
在您的 Facebook 页面上发布带有标题的图片。
use FaceBook; $caption = 'Look at this amazing view!'; $imageUrl = 'https://example.com/images/view.jpg'; FaceBook::shareImage($caption, $imageUrl);
3. shareVideo(string $caption, string $video_url)
在您的 Facebook 页面上发布带有标题的视频。
use FaceBook; $caption = 'Watch this awesome video!'; $videoUrl = 'https://example.com/videos/video.mp4'; FaceBook::shareVideo($caption, $videoUrl);
getPageInsights(array $metrics = [], array $additionalParams = [])
检索有关您的 Facebook 页面的见解(指标)。您可以指定要检索的指标数组,或者留空以获取默认指标。
use FaceBook; // Fetch insights for page impressions and engagement $metrics = ['page_impressions', 'page_engaged_users']; $additionalParams = ['since' => '2024-01-01', 'until' => '2024-01-31']; $insights = FaceBook::getPageInsights($metrics, $additionalParams);
此方法根据请求的指标返回各种见解。指标可以包括页面印象、页面浏览量、页面参与度等。
getPageInfo()
检索有关您的 Facebook 页面的基本信息,例如名称、类别和其他详细信息。
use FaceBook; $pageInfo = FaceBook::getPageInfo();
此方法在您想获取 Facebook 页面的当前详细信息时很有用,例如点赞数、类别或描述。
Telegram 方法
Telegram 门面为与 Telegram 交互提供了以下方法
1. share(string $caption, string $url)
向您的 Telegram 聊天室发布带有标题和链接的消息。
use Telegram; $caption = 'Check out this article!'; $url = 'https://example.com/post/123'; Telegram::share($caption, $url);
2. shareImage(string $caption, string $image_url)
向您的 Telegram 聊天室发布带有标题的图片。
use Telegram; $caption = 'Here is a cool image!'; $imageUrl = 'https://example.com/images/cool_image.jpg'; Telegram::shareImage($caption, $imageUrl);
shareDocument(string $caption, string $document_url)
在您的 Telegram 聊天室中共享带有标题的文档。
use Telegram; $caption = 'Here is an important document!'; $documentUrl = 'https://example.com/files/document.pdf'; Telegram::shareDocument($caption, $documentUrl);
shareVideo(string $caption, string $video_url)
在您的 Telegram 聊天室中发布带有标题的视频。
use Telegram; $caption = 'Watch this video!'; $videoUrl = 'https://example.com/videos/video.mp4'; Telegram::shareVideo($caption, $videoUrl);
getUpdates()
从您的 Telegram 机器人检索更新(消息和事件)。
use Telegram; $updates = Telegram::getUpdates();
错误处理
当使用该包在社交媒体上发布时,如果 API 令牌无效、API 限制超出或请求出现错误,可能会发生异常。您可以按以下方式处理此类异常
try { FaceBook::share($caption, $url); } catch (\Exception $e) { \Log::error("Error posting to Facebook: " . $e->getMessage()); } try { Telegram::share($caption, $url); } catch (\Exception $e) { \Log::error("Error posting to Telegram: " . $e->getMessage()); }
门面
该包提供了两个门面,用于轻松访问社交媒体平台
FaceBook- 通过 Facebook 图形 API 发布到 Facebook。Telegram- 通过 Telegram 机器人 API 发布到 Telegram。
Facebook 门面方法
- share($caption, $url): 发布带有 URL 的状态更新。
- shareImage($caption, $image_url): 发布带有标题的图片。
- shareVideo($caption, $video_url): 发布带有标题的视频。
- getPageInsights($metrics = [], $additionalParams = []): 检索 Facebook 页面见解。
- getPageInfo(): 检索 Facebook 页面信息。
Telegram 门面方法
- share($caption, $url): 发布带有 URL 的消息。
- shareImage($caption, $image_url): 发布带有标题的图片。
- shareVideo($caption, $video_url): 发布带有标题的视频。
- getUpdates():从Telegram机器人检索更新,例如消息或事件。
服务提供商(Laravel 11可选)
对于Laravel 11,如果未启用自动发现,则需要手动在bootstrap/providers.php文件中注册服务提供商
<?php return [ // Other providers HamzaHassanM\LaravelSocialAutoPost\SocialShareServiceProvider::class, ];
对于支持包自动发现的Laravel版本,此步骤是不必要的。
测试包
使用Docker进行测试
为确保该包在所有环境中都能正确工作,您可以使用Docker构建一致性的测试环境。
1. 克隆仓库
git clone https://github.com/hamzahassanm/laravel-social-auto-post.git
cd laravel-social-auto-post
2. 构建Docker镜像
使用Docker构建测试环境
docker-compose build
3. 运行测试
构建Docker镜像后,您可以运行测试
docker-compose up
此命令将启动一个容器,并使用PHPUnit执行测试。
4. 手动访问Docker容器(可选)
出于调试目的,您可以手动进入容器
docker-compose run --rm app bash
在容器内,您可以运行额外的测试或命令
./vendor/bin/phpunit
5. 清理Docker容器
测试完成后,请删除容器
docker-compose down
许可
本软件包遵循MIT许可。
贡献
请随意提出问题或提交pull请求以改进此包。请确保您的贡献遵循现有的代码风格并通过所有测试。
联系方式
如有任何问题或问题,请随时联系HamzaHassanM。
附加说明
1.未来增强:该软件包可以扩展以支持其他平台,例如Twitter、LinkedIn或Instagram。