goldfinch / social-media
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的社会媒体Meta集成。从您的网站上获取并显示Facebook/Instagram帖子作为动态内容。易于自定义。
安装
composer require goldfinch/social-media
1. 创建Meta应用
developers.facebook.com/apps/creation
2. 生成加密密钥
所有来自Meta(ID、密钥、令牌)的敏感数据都在数据库中被加密。因此我们需要一个密钥。您可以使用Taz🌪️模块通过运行CLI命令来生成密钥
php taz generate:encryption-key
或导出辅助函数
LeKoala\Encrypt\EncryptHelper::generateKey();
3. 将密钥保存到.env
ENCRYPTION_KEY={mykey}
4. 设置Facebook动态内容
-
打开此包附带的管理模块“社交媒体”(
/admin/social-media
),然后转到“设置 > API” -
启用Facebook API(复选框)
-
设置以下字段
-
App ID
转到developers.facebook.com/apps/MYAPPID/settings/basic
获取App ID
-
App Secret
转到developers.facebook.com/apps/MYAPPID/settings/basic
获取App secret
-
Page 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(复选框)
-
设置以下字段
-
App Secret
转到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)