Social media Meta Integration for Silverstripe. Fetch and display Facebook/Instagram posts as a feed on your website. Easy to customize.
composer require goldfinch/social-media
developers.facebook.com/apps/creation
All sensitive data that comes from Meta (ID,secret,tokens) are being encrypted in the database. Therefore we need a key. You can generate it using TazπͺοΈ module by running CLI command:
php taz generate:encryption-key
or dumping helper function
LeKoala\Encrypt\EncryptHelper::generateKey();
ENCRYPTION_KEY={mykey}
-
Open Social media admin module that comes with this package
/admin/social-media
and navigate to Settings > API -
Enable Facebook API (checkbox)
-
Set up the following fields:
-
App ID
Go to developers.facebook.com/apps/MYAPPID/settings/basic
Get App ID
-
App Secret
Go to developers.facebook.com/apps/MYAPPID/settings/basic
Get App secret
-
Page ID
Go to www.facebook.com/MYPAGE/about_profile_transparency
Page transparency reveals Page ID
-
Access Token
Go to developers.facebook.com/tools/explorer
Select Meta App, User Token, with
pages_manage_posts
permission and Generate Access Token -
Fields: developers.facebook.com/docs/graph-api/reference/v18.0/page/feed#readfields
See all fields that you can copy and paste here
-
Limit:
Set post limit (for sync),
10
-
β Make sure to Save it. All set to go π
To get Long-Lived Access Token click Get button or run /dev/tasks/SocialMediaToken
To fetch posts, run the task by clicking the Sync button on the same page or jump on /dev/tasks/SocialMediaSync
-
Open Social media admin module that comes with this package
/admin/social-media
and navigate to Settings > API -
Enable Instagram API (checkbox)
-
Set up the following fields:
-
App Secret
Go to developers.facebook.com/apps/MYAPPID/instagram-basic-display/basic-display
Get Instagram App Secret
-
Long-Lived Access Token
Go to developers.facebook.com/apps/MYAPPID/instagram-basic-display/basic-display
Get Get token (User Token Generator) - Add or Remove Instagram Testers
-
Fields: developers.facebook.com/docs/instagram-basic-display-api/reference/media/#fields
See all fields that you can copy and paste here
-
Limit:
Set post limit (for sync),
10
-
β Make sure to Save it. All set to go π
To fetch posts, run the task by clicking the Sync button on the same page or jump on /dev/tasks/SocialMediaSync
You might want to set up cron tasks for automation
/dev/tasks/SocialMediaRefresh # refresh token once in 4 weeks
/dev/tasks/SocialMediaSync # once in hour (or as you wish)
Mixed social feed with Facebook & Instagram posts (sorted by post date)
$SocialFeed
Facebook feed only
$SocialFeed.FacebookFeed
$SocialFeed.FacebookFeed(15)
Facebook posts as ArrayList
<% loop $SocialFeed.FacebookPosts %>
<% loop $SocialFeed.FacebookPosts(15) %>
Instagram feed only
$SocialFeed.InstagramFeed
$SocialFeed.InstagramFeed(15)
Instagram posts as ArrayList
<% loop $SocialFeed.InstagramPosts %>
<% loop $SocialFeed.InstagramPosts(15) %>
To modify templates for your needs, copy them into your templates folder. Use Taz command that does that for you
If you haven't used TazπͺοΈ before, taz file must be presented in your root project folder cp vendor/goldfinch/taz/taz taz
php taz vendor:social-media:templates
If you use silverstripe-elemental, this module comes with Social Media block that handles social feeds for you
You can also store social links with this module Social media > Main
<% 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 %>
caption,id,is_shared_to_feed, media_type,media_url,permalink,thumbnail_url,timestamp,username,children
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)
The MIT License (MIT)