https://github.com/andreyco/instagram-for-php
PHP SDK for Instagram API
https://github.com/andreyco/instagram-for-php
instagram laravel laravel-package php
Last synced: 12 months ago
JSON representation
PHP SDK for Instagram API
- Host: GitHub
- URL: https://github.com/andreyco/instagram-for-php
- Owner: Andreyco
- License: bsd-2-clause
- Created: 2014-12-26T10:49:17.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2019-01-04T06:01:37.000Z (over 7 years ago)
- Last Synced: 2025-03-15T13:48:25.366Z (about 1 year ago)
- Topics: instagram, laravel, laravel-package, php
- Language: PHP
- Size: 165 KB
- Stars: 80
- Watchers: 12
- Forks: 34
- Open Issues: 3
-
Metadata Files:
- Readme: README.markdown
- License: license.txt
Awesome Lists containing this project
README

# Instagram PHP API 4.1.1
A PHP wrapper for the Instagram API.
Feedback or bug reports are appreciated.
> Supports Laravel 5.3, 5.4 & 5.5
> Now supports [Instagram video](#instagram-videos) responses.
# Requirements
- Registered Instagram App
- PHP 5.3 or higher
- cURL
# Get started
To use the Instagram API with OAuth you have to register yourself as developer at the [Instagram Developer Platform](http://instagr.am/developer/register/) and set up an App. Take a look at the [uri guidlines](#samples-for-redirect-urls) before registering a redirect URI.
Please note that Instagram mainly refers to »Clients« instead of »Apps«. So »Client ID« and »Client Secret« are the same as »App Key« and »App Secret«.
> A good place to get started is the example App.
## Initialize the class
### Pure PHP
```php
'YOUR_APP_KEY',
'apiSecret' => 'YOUR_APP_SECRET',
'apiCallback' => 'YOUR_APP_CALLBACK',
'scope' => array('basic'),
));
echo "Login with Instagram";
?>
```
### Laravel
This package offers Laravel support out of the box. These steps are required to setup the package.
**Installation**
```shell
composer require andreyco/instagram
```
**Add Service provider and register Facade**
```php
'providers' => array(
// ...
Andreyco\Instagram\Support\Laravel\ServiceProvider\Instagram::class,
// ...
),
'aliases' => array(
// ...
'Instagram' => Andreyco\Instagram\Support\Laravel\Facade\Instagram::class,
// ...
),
```
**Configuration**
```php
// Pushlish configuration file.
php artisan vendor:publish --provider="Andreyco\Instagram\Support\Laravel\ServiceProvider\Instagram"
// Edit previously created `config/instagram.php` file
return [
'clientId' => '...',
'clientSecret' => '...',
'redirectUri' => '...',
'scope' => ['basic'],
]
```
# Usage
In Laravel application, you can access library by simply using `Instagram` facade, e.g.
```php
Instagram::getLoginUrl();
```
For usage in pure PHP, you have to create instance of class.
```php
$instagram = new Andreyco\Instagram\Client($config);
$instagram->getLoginUrl()
```
## Authentication example
```php
user->username;
echo 'Your access token is: ' . $data->access_token;
?>
```
## Get user likes example
```php
';
print_r($likes);
echo '
';
?>
```
# Available methods
## Setup Instagram
`new Instagram($config: Array|String);`
`array` if you want to authenticate a user and access its data:
```php
new Instagram([
'apiKey' => 'YOUR_APP_KEY',
'apiSecret' => 'YOUR_APP_SECRET',
'apiCallback' => 'YOUR_APP_CALLBACK'
]);
```
`string` if you *only* want to access public data:
```php
new Instagram('YOUR_APP_KEY');
```
## Get login URL
`getLoginUrl($scope: [Array], $state: [string])`
```php
getLoginUrl(['basic', 'likes'], 'uMFYKG5u6v');
```
**Optional scope parameters:**
To find out more about Scopes, please visit https://www.instagram.com/developer/authorization/
## Get OAuth token
`getOAuthToken($code, /)`
`true` : Return only the OAuth token
`false` *[default]* : Returns OAuth token and profile data of the authenticated user
## Set / Get access token
Set access token, for further method calls:
`setAccessToken($token)`
Return access token, if you want to store it for later usage:
`getAccessToken()`
## User methods
- `getUser()`
- `getUser($id)`
- `searchUser($name, <$limit>)`
- `getUserMedia($id, <$limit>)`
- `getUserLikes(<$limit>)`
- `getUserMedia(<$id>, <$limit>)`
- if an `$id` isn't defined, or equals to `self` it returns the media of the logged in user
> [Sample responses of the User Endpoints.](http://instagram.com/developer/endpoints/users/)
## Relationship methods
- `getSelfFollows()`
- `getSelfFollowedBy()`
- `getUserRelationship($id)`
- `modifyRelationship($action, $user)`
- `$action` : Action command (follow / unfollow / block / unblock / approve / deny)
- `$user` : Target user id
```php
modifyRelationship('follow', 1574083);
?>
```
---
Please note that the `modifyRelationship()` method requires the `relationships` [scope](#get-login-url).
---
> [Sample responses of the Relationship Endpoints.](http://instagram.com/developer/endpoints/relationships/)
## Media methods
- `getMedia($id)`
- `searchMedia($lat, $lng, <$distance>, <$minTimestamp>, <$maxTimestamp>)`
- `$lat` and `$lng` are coordinates and have to be floats like: `48.145441892290336`,`11.568603515625`
- `$distance` Radial distance in meter (default is 1km = 1000, max. is 5km = 5000)
- `$minTimestamp` All media returned will be taken *later* than this timestamp (default: 5 days ago)
- `$maxTimestamp` All media returned will be taken *earlier* than this timestamp (default: now)
> [Sample responses of the Media Endpoints.](http://instagram.com/developer/endpoints/media/)
## Comment methods
- `getMediaComments($id)`
- `addMediaComment($id, $text)`
- **restricted access:** please email `apidevelopers[at]instagram.com` for access
- `deleteMediaComment($id, $commentID)`
- the comment must be authored by the authenticated user
---
Please note that the authenticated methods require the `comments` [scope](#get-login-url).
---
> [Sample responses of the Comment Endpoints.](http://instagram.com/developer/endpoints/comments/)
## Tag methods
- `getTag($name)`
- `getTagMedia($name)`
- `searchTags($name)`
> [Sample responses of the Tag Endpoints.](http://instagram.com/developer/endpoints/tags/)
## Likes methods
- `getMediaLikes($id)`
- `likeMedia($id)`
- `deleteLikedMedia($id)`
> How to like a Media: [Example usage](https://gist.github.com/3287237)
> [Sample responses of the Likes Endpoints.](http://instagram.com/developer/endpoints/likes/)
All `<...>` parameters are optional. If the limit is undefined, all available results will be returned.
## Instagram videos
Instagram entries are marked with a `type` attribute (`image` or `video`), that allows you to identify videos.
An example of how to embed Instagram videos by using [Video.js](http://www.videojs.com), can be found in the `/example` folder.
---
**Please note:** Instagram currently doesn't allow to filter videos.
---
## Signed Requests
In order to prevent that your access tokens gets stolen, Instagram recommends to sign your requests with a hash of your API secret, the called endpoint and parameters.
1. Activate ["Enforce Signed Header"](http://instagram.com/developer/clients/manage/) in your Instagram client settings.
2. Enable the signed-requests in your Instagram class:
```php
$instagram->setEnforceSignedRequests(true);
```
## Pagination
Each endpoint has a maximum range of results, so increasing the `limit` parameter above the limit won't help (e.g. `getUserMedia()` has a limit of 90).
That's the point where the "pagination" feature comes into play.
Simply pass an object into the `pagination()` method and receive your next dataset:
```php
getTagMedia('kitten');
$result = $instagram->pagination($photos);
?>
```
Iteration with `do-while` loop.
## Samples for redirect URLs
Registered Redirect URI
Redirect URI sent to /authorize
Valid?
http://yourcallback.com/
http://yourcallback.com/
yes
http://yourcallback.com/
http://yourcallback.com/?this=that
yes
http://yourcallback.com/?this=that
http://yourcallback.com/
no
http://yourcallback.com/?this=that
http://yourcallback.com/?this=that&another=true
yes
http://yourcallback.com/?this=that
http://yourcallback.com/?another=true&this=that
no
http://yourcallback.com/callback
http://yourcallback.com/
no
http://yourcallback.com/callback
http://yourcallback.com/callback/?type=mobile
yes
> If you need further information about an endpoint, take a look at the [Instagram API docs](http://instagram.com/developer/authentication/).
## Example App

This example project, located in the `example/` folder, helps you to get started.
The code is well documented and takes you through all required steps of the OAuth2 process.
Credit for the awesome Instagram icons goes to [Ricardo de Zoete Pro](http://dribbble.com/RZDESIGN).
### More examples and tutorials:
- [User likes](https://gist.github.com/cosenary/3287237)
- [Follow user](https://gist.github.com/cosenary/8322459)
- [User follower](https://gist.github.com/cosenary/7267139)
- [Load more button](https://gist.github.com/cosenary/2975779)
- [User most recent media](https://gist.github.com/cosenary/1711218)
- [Instagram login](https://gist.github.com/cosenary/8803601)
- [Instagram signup (9lessons tutorial)](http://www.9lessons.info/2012/05/login-with-instagram-php.html)
> Let me know if you have to share a code example, too.
# Release notes
You can find [release notes here](https://github.com/Andreyco/Instagram-for-PHP/releases)
# Credits
Copyright (c) 2014 - Andrej Badin
Released under the [BSD License](http://www.opensource.org/licenses/bsd-license.php).
Instagram-PHP-API contains code taken from [Christian Metz's](https://github.com/cosenary) [Instagram-PHP-API](https://github.com/cosenary/Instagram-PHP-API), also licensed under [BSD License](COSENARY).