hamzahassanm/laravel-social-auto-post

Laravel 社交媒体自动发布包

v1.0.2 2024-09-07 11:40 UTC

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。