PHP веб приложение

Пример выложен на github php_sdk_example

Покажем, как написать простое PHP-приложение, использующее api одноклассников при помощи SDK. На примере будет показано, как сделать авторизацию в приложении и вызвать несколько простых методов.

Первым делом необходимо создать приложение. На email разработчика должно прийти письмо с данными о приложении.

Для корректной работы приложения необходимо записать параметры приложения в соответствующие им переменные: $app_id, $app_public_key, $app_secret_key, $redirect_url.

Далее нам понадобятся следующие данные:

  • APP_ID (Application ID)
  • APP_PUBLIC_KEY (Публичный ключ приложения)
  • APP_SECRET_KEY (Секретный ключ приложения)

1. Подготовка

В первую очередь следует скачать наше sdk в любую удобную директорию и добавить следующий код перед первым использованием SDK.

<?php
    /*
        Этот код необходимо добавить один раз перед первым использованием SDK, указав в директиве require путь к файлу с SDK.
        Он подключает SDK и проверяет, установлена ли необходимая для работы SDK библиотека curl.
    */
    require("./odnoklassniki_sdk.php");
    if (!OdnoklassnikiSDK::checkCurlSupport()){
        print "У вас не установлен модуль curl, который требуется для работы с SDK одноклассников.  Инструкция по установке есть, например, <a href=\"http://www.php.net/manual/en/curl.installation.php\">здесь</a>.";
        return;
    }
?>

В директиве require требуется указать ваш путь к файлу с SDK.

Данный код подключает сдк и проверяет доступна ли необходимая для работы libcurl.

Если библиотека недоступна, то необходимо ее установить. Процесс установки описан, например, здесь.

2. Авторизация

Авторизация происходит по методу OAuth 2.0. Алгоритм подразумевает несколько этапов:

  1. На первом этапе необходимо удобным для вас способом перенаправить пользователя по ссылке OAuth
  2. По данной ссылке пользователь проходит аторизацию и разрешает приложению запрошенные действия. В случае успеха происходит переадресация пользователя на заданный redirectUrl, в параметрах передается code.
  3. Получить код можно, используя функцию getCode(). В случае, если параметр отсутствует, функция вернет null.
  4. Если код получен, следует обменять его на токен доступа, используя функцию changeCodeToToken($code). Функция вернет true, если токен получен, false, если не получен.

В случае возникновения ошибки “токен истек” следует попробовать обновить токен, используя функцию updateAccessTokenWithRefreshToken(). Данная функция возвращает true в случае успеха, false в случае неудачи.

Если данная функция возвращает false, то для получения токена доступа необходимо провести авторизацию сначала.

Пример проведения авторизации:

if (!is_null(OdnoklassnikiSDK::getCode())){
    if(OdnoklassnikiSDK::changeCodeToToken(OdnoklassnikiSDK::getCode())){
        // сделать что-то, если аторизация удалась
    }
}

3. Вызов метода

Для вызова метода API следует воспользоваться методом SDK makeRequest($methodName, $parameters = null).
Данная функция принимает на вход 1 или 2 параметра - название метода и ассоциативный массив (имя_параметра => значение), если параметры требуются.
В общем случае функция возвращает ассоциативный массив запрошенных данных. В случае некорректно переданных данных(например, второй параметр не является массивом или null), функция возвращает null.

Пример вызова функции:

$current_user = OdnoklassnikiSDK::makeRequest("users.getCurrentUser", array("fields" => "name,pic_5"));

В случае, если сервер вернет ошибку, возвращенный функцией ассоциативный массив будет содержать код и описание ошибки.