api instagram php

153
27 марта 2018, 02:16

Работаю с api instagram в php, так вот мне нужно получить данные о пользователе. В оф. документации instagram > (https://www.instagram.com/developer/authentication/), есть такая строка:

This is a sample 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

Так вот, как я понял, это указано как пример, для получения токена (поправьте если не так), посмотрел видеоролики на php, и там пишут так:

public function getAccessTokenAndUserDetails($code) {
        $postFields = array(
            "client_id" => $this->clientID,
            "client_secret" => $this->clientSecret,
            "grant_type" => "authorization_code",
            "redirect_uri" => $this->redirectURI,
            "code" => $code
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://api.instagram.com/oauth/access_token");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
        $response = curl_exec($ch);
        curl_close($ch);
        return json_decode($response, true);
    }

Ну уже и через функцию получаем к ней доступ:
$data = $Instagram->getAccessTokenAndUserDetails($_GET['code']); print_r($data);
Так вот, вопрос, у меня что-то не работает, то есть json запрос не отображается, показывает null(через var_dump). В чем может быть ошибка?

Answer 1

В приведенном вами примере при возврате значения в методе getAccessTokenAndUserDetails вы используете json_decode(). Он возвращает null в двух случаях:

  1. Не смог распарсить ответ (некорректный json или вообще не json) - наиболее вероятно
  2. Уровень вложенности json - массива превышает установленную глубину рекурсии - маловероятно.

Таким образом, проверьте, какой ответ возвращает вам curl-запрос, действительно ли он является валидным json:

public function getAccessTokenAndUserDetails($code) {
        $postFields = array(
            "client_id" => $this->clientID,
            "client_secret" => $this->clientSecret,
            "grant_type" => "authorization_code",
            "redirect_uri" => $this->redirectURI,
            "code" => $code
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://api.instagram.com/oauth/access_token");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
        $response = curl_exec($ch);
        curl_close($ch);
        var_dump($response); // смотрим, что вернул curl
        return json_decode($response, true);
    }
READ ALSO
Добавление слайдера на каждую страницу

Добавление слайдера на каждую страницу

Есть сайт в котором около 100 страниц, сайт на WordpressПроблема в следующем, для каждой странице хочется вывести в шапке картинку, видео или слайдер

143
Обращение к свойству объекта с @ в имени

Обращение к свойству объекта с @ в имени

Добрый день уважаемое сообщество!

119
Обращение к методу в PHP

Обращение к методу в PHP

Здравствуйте! Сразу хочу извиниться за глупый вопрос)) Начал изучать ООП в php и наткнулся на такую запись $this->MsLoader->MsHelper->addStyle('abc');Понимаю...

117