Step 1: Register A New Client here.

Fill in:
Copy the CLIENT ID you get after you submit the form.
Step 2: Prompt to get Access Token from Users, and Request for Likes with PHP
So the onclick event I have:
$('#social').on 'click', '.instagram .likes', ->
mediaId = $(this).data('media-id')
if !$(this).hasClass('liked')
$(this).addClass('liked')
Instagram.likePost mediaId, => console.log 'liked'
else
$(this).removeClass('liked')
Instagram.unlikePost mediaId, => console.log 'unliked'
And inside Instagram.coffee:
Instagram =
hasAccessToken: ->
localStorage.getItem('accessToken')
getAccessToken: ->
clientId = "4axxxxa41axxxxda9cxxxx54axxxxb00"
redirectUri = "http://localhost/redirect.html" # redirect to this page once the authentication is done
url = "https://instagram.com/oauth/authorize/?client_id=#{ clientId }&response_type=token&scope=likes&redirect_uri=#{ redirectUri }"
window.open url, 'authenticate', "width=800,height=700"
likeActions: (mediaId, like, done) ->
if !Modernizr.localstorage
console.log "doesn't support localstorage!"
return
if !@hasAccessToken()
console.log 'no access token'
@getAccessToken()
else
console.log 'has access token'
accessToken = localStorage.getItem('accessToken')
url = "./instagram/index.php?like=#{ like }&mediaId=#{ mediaId }&token=#{ accessToken }"
$.ajax(url: url, type: 'GET', complete: done)
likePost: (mediaId, done) ->
@likeActions(mediaId, true, done)
unlikePost: (mediaId, done) ->
@likeActions(mediaId, false, done)
And redirect.html is where the page goes when the authentication is done:
<!DOCTYPE html>
<html>
<head>
<title>Redirect</title>
</head>
<body>
<script>
accessToken = location.href.replace(/(.*)access\_token\=/, '')
localStorage.setItem('accessToken', accessToken)
window.close() // close window after storing accessToken in localStorage
</script>
</body>
</html>
Step 3: Edit index.php
This is where the requests are wrapped and handled:
<?php
require 'instagram.class.php';
// get the file here: http://cosenary.github.io/Instagram-PHP-API/
// initialize class
$instagram = new Instagram(array(
'apiKey' => '4axxxxa41axxxxda9cxxxx54axxxxb00',
'apiSecret' => '8c0xxxxxx44845xxxxxxxe43axxxfeaf'
));
$like = $_GET['like'];
$token = $_GET['token'];
$media_id = $_GET['mediaId'];
$instagram->setAccessToken($token);
if ($like === "true") {
$instagram->likeMedia($media_id);
} else {
$instagram->deleteLikedMedia($media_id);
}
?>
Reference:
- http://jelled.com/instagram/access-token
- http://cosenary.github.io/Instagram-PHP-API/
- http://instagram.com/developer/endpoints/likes/
- http://stackoverflow.com/questions/20929799/instagram-you-cannot-like-this-media/25417365#25417365

