innocode-digital / wp-instagram
Enables Instagram Basic Display API for developers.
Installs: 2 061
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Type:wordpress-plugin
Requires
README
Description
Enables Instagram Basic Display API for developers.
The idea of the plugin is to use Instagram Basic Display PHP API with ability to get access token through WordPress admin panel.
Install
-
Preferable way is to use Composer:
composer require innocode-digital/wp-instagram
-
Alternate way is to clone this repo to
wp-content/plugins/
:cd wp-content/plugins/ git clone git@github.com:innocode-digital/wp-instagram.git cd wp-instagram/ composer install
Activate WordPress Instagram Basic Display integration with WP-CLI
wp plugin activate wp-instagram
or from Plugins page.
Usage
-
Check Facebook Manual on how to create an APP.
-
Add required constants (usually to
wp-config.php
):define( 'INSTAGRAM_CLIENT_ID', '' ); define( 'INSTAGRAM_CLIENT_SECRET', '' );
-
Add site auth URL
https://site.com/instagram/auth/
to Valid OAuth Redirect URIs in Basic Display. -
Open settings page in WordPress admin panel Settings -> Instagram
/wp-admin/options-general.php?page=innocode-instagram
-
Click on Log in button or Log in as another user in case when should change account.
-
Start use Instagram Basic Display PHP API through
innocode_instagram();
function e.g.innocode_instagram()->getUserProfile();
. -
(optional) Set site deauth REST API endpoint
https://site.com/wp-json/innocode/v1/instagram/deauth
in Deauthorize Callback URL in Basic Display.
Notes
If site is a part of Multisite then main site auth URL should be added in Valid OAuth Redirect URIs. So, plugin should be active on all network or at least on the main site additionally.
Plugin adds daily cron job after authorization. So, please be sure cron functionality works. The token tries to update 3 days before the expiration, user profile data updated daily.
Documentation
By default, endpoint auth URL is using instagram
as endpoint, but it's possible to
change with constant:
define( 'INNOCODE_INSTAGRAM_ENDPOINT', 'insta' );
App site
If you want to use one APP for all of your sites where Instagram integration is in use and correctly handle deauthorization process then this plugin could be installed additionally on a site which will store user IDs and URLs of sites where these IDs are using, e.g. this could be a site of your company. Then it's needed to set one more constant on all sites with activated plugin.
define( 'INNOCODE_INSTAGRAM_APP_SITE', 'https://app-site.com' );
It's possible to change full auth URL:
add_filter( 'innocode_instagram_redirect_uri', function ( string $url ) {
return $url;
} );
It's possible to change Instagram permission:
add_filter( 'innocode_instagram_scope', function ( array $scope ) {
return $scope; // Default is array containing 'user_profile' and 'user_media'.
} );
It's possible to change state parameter which is sending with auth request:
add_filter( 'innocode_instagram_state', function ( string $state ) {
return $scope; // Default is string in format '$blog_id:$nonce'.
} );
It's possible to change place where endpoint should be added:
add_filter( 'innocode_instagram_endpoint_mask', function ( $mask, $endpoint ) {
return $mask; // Default is EP_ROOT constant.
}, 10, 2 );