goldfinch/social-media

Facebook/Instagram API (META) integration for Silverstripe

Installs: 344

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:silverstripe-vendormodule

v2.0.1 2024-03-10 00:21 UTC

This package is auto-updated.

Last update: 2024-04-10 09:14:50 UTC


README

Silverstripe Version Package Version Total Downloads License

Meta

Social media Meta Integration for Silverstripe. Fetch and display Facebook/Instagram posts as a feed on your website. Easy to customize.

Install

composer require goldfinch/social-media

1. Create Meta App

developers.facebook.com/apps/creation

2. Generate encryption key

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()

3. Save the key in .env

ENCRYPTION_KEY={mykey}

4. Set up a Facebook Feed

✅ 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

5. Set up an Instagram Feed

✅ 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

Cron tasks

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)

Usage

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) %>

Templates and modifications

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

Elemental Block

If you use silverstripe-elemental, this module comes with Social Media block that handles social feeds for you

Useful data

Social link fields

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 %>

Instagram fields

caption,id,is_shared_to_feed, media_type,media_url,permalink,thumbnail_url,timestamp,username,children

Facebook fields

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)

License

The MIT License (MIT)