Instagram Subscription API Asking For Access Token

后端 未结 1 1568
耶瑟儿~
耶瑟儿~ 2020-12-12 03:40

I have been using Instagram Subscription API to subscribe to Instagram real time updates. I have successfully subscribed to multiple subscriptions on Instagram. But now it i

相关标签:
1条回答
  • 2020-12-12 03:48

    Too old but I hope will be helpful to some people.

    Creating a subscription is 4 step process:-

    Step One: Direct your user to our authorization URL:-

    GET request :- https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

    Step Two: Receive the redirect from Instagram

    As a response of step 1, Instagram will provide you a http://your-redirect-uri?code=CODE on success, which you will use in step three. Note: CODE is not access token, you will use CODE to get access token.

    Step Three: Request the access_token:-

    POST CURL Request :-

     curl -F 'client_id=CLIENT_ID' \
        -F 'client_secret=CLIENT_SECRET' \
        -F 'grant_type=authorization_code' \
        -F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
        -F 'code=CODE' \
        https://api.instagram.com/oauth/access_token
    

    on success DEMO Data

    {
        "access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
        "user": {
            "id": "1574083",
            "username": "snoopdogg",
            "full_name": "Snoop Dogg",
            "profile_picture": "..."
        }
    }
    

    Step Four: Creating a Subscription

    Step Four has some sub steps. i) POST curl request to Instagram API

    curl -F 'client_id=CLIENT-ID' \
         -F 'client_secret=CLIENT-SECRET' \
         -F 'object=user' \
         -F 'aspect=media' \
         -F 'verify_token=myVerifyToken' \
         -F 'callback_url=http://YOUR-CALLBACK/URL' \
         https://api.instagram.com/v1/subscriptions/
    
    Note: myVerifyToken should be a access token of any one user, subscription is not created separately for every user, one subscription will be working for all the authenticated user of this app. so you may manually provide one. You do not create subscription again and again, so do not make calls to create subscription, when ever you think you need one subscription then only create one or usually you will continue with one or delete and recreate one.
    

    ii) On success Instagram will provide

       `https://your-callback.com/url/?hub.mode=subscribe&hub.challenge=15f7d1a91c1f40f8a748fd134752feb3&hub.verify_token=myVerifyToken` of which the callback page ( `http://YOUR-CALLBACK/URL` ) should only display `hub.challenge` that is:-
    

    on callback page eg: callback.php

    <?php echo $_GET['hub_challenge']; //yes undescore in palce of dot.  ?>
    

    iii) If the Instagram API will get $_GET['hub_challenge'] that is 15f7d1a91c1f40f8a748fd134752feb3 here it will reply for our post request to create a subscription with

    something like

    {
        "meta": {
            "code": 200
        },
        "data": [
            {
                "id": "1",
                "type": "subscribe",
                "object": "user",
                "aspect": "media",
                "callback_url": "https://your-callback.com/url/"
            }
        ]
    }
    

    iii) If success you can list out the subscription with a GET request may be directly from your browser. GET Request:- https://api.instagram.com/v1/subscriptions?client_secret=CLIENT-SECRET&client_id=CLIENT-ID

    now when ever the authenticated users will post the callback page will get a GET request from Instagram api with some JSON data containing instagram user_id that you will get as object_id and media_id that is the post id. You can catch that and use that with the below code, yes you can use better code than me , that is GREAT.

     $content = file_get_contents('php://input');
    try {
        if ($content === false) {
            // Handle the error
            //echo 'Whoops! Something went wrong!';
            file_put_contents('subscriptions.log', 'getting empty content', FILE_APPEND);
        } else {
            $content_object = json_decode($content)[0];
            $error = json_last_error();
            file_put_contents('subscriptions.log', $error, FILE_APPEND);
            $ig_id = $content_object->object_id;
            $media_id = $content_object->data->media_id;
        }
    } catch (Exception $e) {
        // Handle exception
        //echo 'Whoops! Wrongly encoded data receiving!';
        file_put_contents('subscriptions.log', $e->getMessage(), FILE_APPEND);
    }
    
    0 讨论(0)
提交回复
热议问题