goldfinch / socialkit
为 Silverstripe 集成 Facebook/Instagram API (META)
Requires
- php: >=8.0
- dnadesign/silverstripe-elemental: ^5.0
- goldfinch/date: ^1.0
- goldfinch/helpers: ^2.0
- goldfinch/silverstripe-jsontext: ^2.1
- guzzlehttp/guzzle: ^7.7
- jonom/silverstripe-someconfig: ^1.0
- lekoala/silverstripe-encrypt: dev-master
- silverstripe/admin: ^2.0
- silverstripe/crontask: ^3.0
- silverstripe/framework: ^5.0
- unclecheese/display-logic: ^3.0
README
Silverstripe 社交媒体元集成。将 Facebook/Instagram 帖子作为网站上的动态内容获取并显示。易于定制。
安装
composer require goldfinch/social-media
1. 创建 Meta 应用
developers.facebook.com/apps/creation
2. 生成加密密钥
所有来自 Meta(ID、密钥、令牌)的敏感数据都在数据库中加密。因此我们需要一个密钥。您可以使用运行 CLI 命令的 Taz🌪️ 模块来生成它
php taz generate:encryption-key
或导出辅助函数
LeKoala\Encrypt\EncryptHelper::generateKey();
3. 在 .env
中保存密钥
ENCRYPTION_KEY={mykey}
4. 设置 Facebook 动态内容
-
打开此包附带的管理模块 社交媒体(
/admin/social-media
),导航到 设置 > API -
启用 Facebook API(复选框)
-
设置以下字段
-
应用 ID
转到 developers.facebook.com/apps/MYAPPID/settings/basic
获取 应用 ID
-
应用密钥
转到 developers.facebook.com/apps/MYAPPID/settings/basic
获取 应用密钥
-
页面 ID
转到 www.facebook.com/MYPAGE/about_profile_transparency
页面透明度 显示 页面 ID
-
访问令牌
转到 developers.facebook.com/tools/explorer
选择 Meta 应用、用户令牌,具有
pages_manage_posts
权限,并 生成访问令牌 -
字段: developers.facebook.com/docs/graph-api/reference/v18.0/page/feed#readfields
查看 所有可以复制粘贴的字段
-
限制:
设置帖子限制(同步),
10
-
✅ 确保保存。一切准备就绪 🎉
要获取 长期访问令牌,请点击 获取 按钮,或运行 /dev/tasks/SocialMediaToken
要获取帖子,请在同一页面上点击 同步 按钮,或转到 /dev/tasks/SocialMediaSync
5. 设置 Instagram 动态内容
-
打开此包附带的管理模块 社交媒体(
/admin/social-media
),导航到 设置 > API -
启用 Instagram API(复选框)
-
设置以下字段
-
应用密钥
转到 developers.facebook.com/apps/MYAPPID/instagram-basic-display/basic-display
获取 Instagram 应用密钥
-
长期访问令牌
转到 developers.facebook.com/apps/MYAPPID/instagram-basic-display/basic-display
获取 获取令牌(用户令牌生成器)- 添加或删除 Instagram 测试者
-
字段: developers.facebook.com/docs/instagram-basic-display-api/reference/media/#fields
查看 所有可以复制粘贴的字段
-
限制:
设置帖子限制(同步),
10
-
✅ 确保保存。一切准备就绪 🎉
要获取帖子,请在同一页面上点击 同步 按钮,或转到 /dev/tasks/SocialMediaSync
定时任务
您可能需要设置定时任务以进行自动化
/dev/tasks/SocialMediaRefresh # refresh token once in 4 weeks /dev/tasks/SocialMediaSync # once in hour (or as you wish)
用法
Facebook & Instagram 帖子的混合社交动态内容(按帖子日期排序)
$SocialFeed
仅 Facebook 动态内容
$SocialFeed.FacebookFeed $SocialFeed.FacebookFeed(15)
Facebook 帖子作为 ArrayList
<% loop $SocialFeed.FacebookPosts %> <% loop $SocialFeed.FacebookPosts(15) %>
仅 Instagram 动态内容
$SocialFeed.InstagramFeed $SocialFeed.InstagramFeed(15)
Instagram 帖子作为 ArrayList
<% loop $SocialFeed.InstagramPosts %> <% loop $SocialFeed.InstagramPosts(15) %>
模板和修改
为了根据您的需求修改模板,请将它们复制到您的templates文件夹中。使用Taz命令,该命令可为您完成此操作
如果您之前没有使用过Taz🌪️,则taz文件必须在您的根项目文件夹中cp vendor/goldfinch/taz/taz taz
php taz vendor:social-media:templates
基础块
如果您使用silverstripe-elemental,此模块附带社交媒体块,该块可为您处理社交媒体流
有用数据
社交链接字段
您还可以使用此模块存储社交链接社交媒体 > 主
<% with SocialMediaConfig %> <% if GeneralFacebook %> <a href="{$GeneralFacebookURL}" target="_blank" rel="nofollow">Facebook</a> <% end_if %> <% if GeneralInstagram %> <a href="{$GeneralInstagramURL}" target="_blank" rel="nofollow">Instagram</a> <% end_if %> <%-- same for Twitter, LinkedIn, YouTube --%> <% end_with %>
Instagram字段
caption,id,is_shared_to_feed, media_type,media_url,permalink,thumbnail_url,timestamp,username,children
Facebook字段
id,actions,admin_creator,allowed_advertising_objects,application,attachments,backdated_time,call_to_action,can_reply_privately,child_attachments,created_time,feed_targeting,from,full_picture,icon,instagram_eligibility,is_eligible_for_promotion,is_expired,is_hidden,is_instagram_eligible,is_popular,is_published,is_spherical,message,message_tags,parent_id,permalink_url,place,privacy,promotable_id,properties,sheduled_publish_time,shares,status_type,story,story_tags,subscribed,targeting,to,updated_time,video_buying_eligibility,likes.summary(total_count),comments.summary(total_count),reactions.summary(total_count)
预览
API设置
演示社交媒体输出
许可
MIT许可(MIT)