marshmallow / laravel-facebook-webhook
一个用于通过webhooks和Graph API在Laravel中检索Facebook引领的软件包。
Requires
- php: ^7.4|^8.0
- illuminate/contracts: ^8.0|^9.0|^10.0|^11.0
- laravel/socialite: ^v5.5.1
- socialiteproviders/facebook: ^4.1.0
- spatie/laravel-package-tools: ^1.9.2
- spatie/laravel-webhook-client: ^3.1.0
Requires (Dev)
- brianium/paratest: ^v6.4|^7.0
- orchestra/testbench: ^v7.1.0|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.0|^11.0
- vimeo/psalm: ^4.22|^5.0
README
安装
您可以通过composer安装此软件包
composer require marshmallow/laravel-facebook-webhook
此软件包使用 spatie/laravel-webhook-client 和 Laravel Socialite。请阅读这两个软件包的说明!
从 spatie/laravel-webhook-client 发布迁移以创建包含webhook调用的表,您必须使用以下命令发布迁移:
php artisan vendor:publish --provider="Spatie\WebhookClient\WebhookClientServiceProvider" --tag="migrations"
确保为Spatie Webhook软件包添加正确的配置
'name' => 'facebook-lead', 'signing_secret' => env('FACEBOOK_CLIENT_SECRET'), 'signature_header_name' => 'X-Hub-Signature', 'signature_validator' => \Marshmallow\LaravelFacebookWebhook\SignatureValidator\FacebookSignatureValidator::class, 'process_webhook_job' => \Marshmallow\LaravelFacebookWebhook\Jobs\ProcessFacebookLeadWebhookJob::class,
请参阅基本安装指南,然后遵循以下特定提供者的说明。
将配置添加到config/services.php
'facebook' => [ 'client_id' => env('FACEBOOK_CLIENT_ID'), 'client_secret' => env('FACEBOOK_CLIENT_SECRET'), 'redirect' => env('FACEBOOK_REDIRECT_URI') ],
您可以使用以下命令发布配置和迁移文件:
php artisan vendor:publish --provider="Marshmallow\LaravelFacebookWebhook\LaravelFacebookWebhookServiceProvider"
迁移发布后,您可以通过运行迁移来创建webhook_calls
表:
php artisan migrate
请确保已设置以下.env变量
FACEBOOK_CALLBACK_ROUTE= #Default set 'webhook-client-facebook-lead' FACEBOOK_CLIENT_ID= FACEBOOK_CLIENT_SECRET= FACEBOOK_PAGE_ID= FACEBOOK_REDIRECT_URI= #'/auth/facebook'
配置
这是将在config/facebook-webhook.php
中发布的文件的正文
'configs' => [ [ /* * This package supports multiple webhook receiving endpoints. If you only have * one endpoint receiving webhooks, you can use 'default'. */ 'name' => 'facebook-lead', /* * The class name of the job that will process the Facebook Lead Data. * * This should be set to a class that extends \Marshmallow\LaravelFacebookWebhook\Jobs\ProcessFacebookLeadJob, */ 'process_facebook_webhook_job' => '', /* * The callback route name from Facebook Leads . */ 'callback_route' => env('FACEBOOK_CALLBACK_ROUTE', 'webhook-client-facebook-lead'), /* * The graph api version for Facebook . */ 'graph_api_version' => 'v14.0', /* * The App ID from the Facebook App. */ 'app_id' => env('FACEBOOK_CLIENT_ID'), /* * The App Secret from the Facebook App. */ 'app_secret' => env('FACEBOOK_CLIENT_SECRET'), /* * The Page ID to retrieve the leads from. */ 'page_id' => env('FACEBOOK_PAGE_ID'), ], ],
设置
使用以下来自Facebook的说明创建一个Facebook应用程序,确保您的应用程序具有以下权限:请求广告账户和页面上可以投放广告的人的Page或User访问令牌
- ads_management权限
- leads_retrieval权限
- pages_show_list权限
- pages_read_engagement权限
- pages_manage_ads权限
设置迁移和.env后,运行以下命令:
php artisan marshmallow:setup-facebook
用法
此软件包使用 spatie/laravel-webhook-client 来检索和处理传入的Facebook Webhook。对于初始Facebook身份验证,它使用 Laravel Socialite。在传入的webhook上,它通过Facebook Graph API检索引领数据并在完成后发送事件。您可以在facebook-webhook
配置文件中的process_facebook_webhook_job
中指定哪个作业应处理引领数据。
例如,创建一个作业:
use Marshmallow\LaravelFacebookWebhook\Jobs\ProcessFacebookLeadJob as MarshmallowWebhookJob; class ProcessFacebookDataJob extends MarshmallowWebhookJob { /** * Execute the job. * * @return void */ public function handle() { ray($this->webhookData); } }
并将其添加到配置中:
'process_facebook_webhook_job' => \App\Jobs\ProcessFacebookDataJob::class,
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查看我们关于如何报告安全漏洞的安全策略。
鸣谢
许可协议
MIT许可协议(MIT)。请参阅许可文件以获取更多信息。