Skip to content

Commit

Permalink
method authorizeUri added and comments
Browse files Browse the repository at this point in the history
  • Loading branch information
melnikovdv committed Nov 3, 2011
1 parent 1691232 commit dd9a252
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 14 deletions.
11 changes: 8 additions & 3 deletions README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,13 @@ PHP Yandex.Money API SDK
Структура объекта YandexMoney
----------------------------

* `authorize` — статический метод для инициации OAuth-авторизации.
* `authorizeUri` — статический метод для получения URI, по которому нужно переидти для инициации OAuth-авторизации.
На вход принимает идентификатор приложения, список прав доступа и URI редиректа после авторизации.
Возвращает временный код.
Возвращает URI OAuth-авторизации

* `authorize` — статический метод для инициации OAuth-авторизации.
На вход принимает идентификатор приложения, список прав доступа и URI редиректа после авторизации.
Отправляет запрос на сервер Яндекс.Денег и запрашивает временный код. Внимание: делает die в конце. Если у вас включен output control или вы используете кеширование, то используйте метод authorizeUri и отправляйте запрос самостоятельно.

* `__construct` — конструктор класса.
На вход принимает идентификатор приложения и путь к файлу ym.crt цепочки сертификатов (приложен к библиотеке).
Expand Down Expand Up @@ -70,7 +74,8 @@ PHP Yandex.Money API SDK
Для начала работы с API следует прочитать описание выше или ознакомиться с самой библиотекой `ym.php`. Для тех, кто не будет устанавливать и смотреть подробные примеры, покажем пару вызовов.
Для выполнения операций со счетом через API необходимо получить разрешение пользователя, то есть токен. Его можно получить следующими вызовами (к примеру, с доступом на просмотр информации о счете и истории операций):

YandexMoney::authorize(Consts::CLIENT_ID, 'account-info operation-history', Consts::REDIRECT_URL);
$uri = YandexMoney::authorizeUri(Consts::CLIENT_ID, $scope, Consts::REDIRECT_URL);
header('Location: ' . $uri);

// затем на странице редиректа инициировать создание объекта и получение токена
$ym = new YandexMoney(Consts::CLIENT_ID, Consts::CERTIFICATE_CHAIN_PATH);
Expand Down
14 changes: 10 additions & 4 deletions doc/Description.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,18 @@
- главный класс YandexMoney (реализация интерфейса);
- класс-перечисление с правами доступа (YMScope);
- вспомогательные классы (response-объекты вывода результатов запросов к API).
В комплект библиотеки приложены 2 файла, которые реализуют шифрование: Rijndael.php и AES.php. Данные файлы взяты из библиотеки phpseclib (http://phpseclib.sourceforge.net/). Они нужны на случай, если вы будете использовать методы сохранения и восстановления токенов.
В комплект библиотеки приложены 2 файла, которые реализуют шифрование: Rijndael.php и AES.php. Данные файлы взяты из библиотеки phpseclib (http://phpseclib.sourceforge.net/). Они нужны для шифрования при сохранении и восстановлении токенов.
Внимание: использует PHP версии 5, а также стандартную библиотеку cUrl для http-запросов.

Структура объкта YandexMoney:
authorize - статический метод для инициации OAuth-авторизации.

authorizeUri - статический метод для получения URI, по которому нужно переидти для инициации OAuth-авторизации.
На вход принимает идентификатор приложения, список прав доступа и URI редиректа после авторизации.
Возвращает URI OAuth-авторизации

authorize - статический метод для инициации OAuth-авторизации.
На вход принимает идентификатор приложения, список прав доступа и URI редиректа после авторизации.
Возвращает временный код.
Отправляет запрос на сервер Яндекс.Денег и запрашивает временный код. Внимание: делает die в конце. Если у вас включен output control или вы используете кеширование, то используйте метод authorizeUri и отправляйте запрос самостоятельно.

__construct - конструктор класса.
На вход принимает идентификатор приложения и путь к файлу ym.crt цепочки сертификатов (приложен к библиотеке).
Expand Down Expand Up @@ -60,7 +65,8 @@
Для начала работы с API следует прочитать описание выше или ознакомиться с самой библиотекой ym.php. Для тех, кто не будет устанавливать и смотреть подробные примеры, покажем пару вызовов.
Для выполнения операций со счетом через API необходимо получить разрешение пользователя, то есть токен. Его можно получить следующими вызовами (к примеру, с доступом на просмотр информации о счете и истории операций):

YandexMoney::authorize(Consts::CLIENT_ID, 'account-info operation-history', Consts::REDIRECT_URL);
$uri = YandexMoney::authorizeUri(Consts::CLIENT_ID, $scope, Consts::REDIRECT_URL);
header('Location: ' . $uri);

// затем на странице редиректа инициировать создание объекта и получение токена
$ym = new YandexMoney(Consts::CLIENT_ID, Consts::CERTIFICATE_CHAIN_PATH);
Expand Down
3 changes: 2 additions & 1 deletion src/auth.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@
}
}

YandexMoney::authorize(Consts::CLIENT_ID, $scope, Consts::REDIRECT_URL);
$uri = YandexMoney::authorizeUri(Consts::CLIENT_ID, $scope, Consts::REDIRECT_URL);
header('Location: ' . $uri);
?>
3 changes: 2 additions & 1 deletion src/redirected.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
отправили запрос в файл <i>auth.php</i>. В нем из POST-параметров,
которые мы указали в форме, формируется строка прав <i>$scope</i> и,
затем делается главный вызов:
<pre class="code">YandexMoney::authorize(Consts::CLIENT_ID, $scope, Consts::REDIRECT_URL);</pre>
<pre class="code">$uri = YandexMoney::authorizeUri(Consts::CLIENT_ID, $scope, Consts::REDIRECT_URL);
header('Location: ' . $uri);</pre>
При вызове этого метода мы указываем идентификатор нашего приложения <i>CLIENT_ID</i>,
права доступа <i>$scope</i> и адрес редиректа <i>REDIRECT_URL</i> (адрес на эту страницу
redirected.php).<br>
Expand Down
39 changes: 34 additions & 5 deletions src/yamoney/ym.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,33 @@ interface IYandexMoney {

/**
* Статический метод OAuth-аутентификации приложения для получения временного
* кода (токена). Он должен отправлять запрос в Яндекс.Деньги на доступ приложения
* кода (токена).
* @static
* @abstract
* @param $clientId string идентификатор приложения в системе Яндекс.Деньги
* @param $scope string список запрашиваемых приложением прав. В качестве разделителя
* элементов списка используется пробел, элементы списка чувствительны к регистру.
* Примеры прав можно посмотреть в классе Scope.
* Если параметр не задан, то будут запрашиваться следующие права:
* account-info operation-history
* @param $redirectUri string URI страницы приложения, на который OAuth-сервер
* осуществляет передачу события результата авторизации. Значение этого параметра
* при посимвольном сравнении должно быть идентично значению redirectUri,
* указанному при регистрации приложения. При сравнении не учитываются индивидуальные
* параметры приложения, которые могут быть добавлены в конец строки URI.
* @return string возвращает URI, по которому нужно переидти для для
* инициации аутентификации
*/
public static function authorizeUri($clientId, $scope = NULL, $redirectUri = NULL);

/**
* Статический метод OAuth-аутентификации приложения для получения временного
* кода (токена). Он отправляет запрос в Яндекс.Деньги на доступ приложения
* к эккаунту пользователя и затем сервер Яндекс.Денег сделает редирект на
* адрес, указанный в параметрах $redirectUri
* адрес, указанный в параметрах $redirectUri. Внимание: делает die в конце.
* DON'T RETURNING. DIES!
* Если у вас включен output control или вы используете кеширование, то
* используйте метод authorizeUri и отправляйте запрос самостоятельно.
* @static
* @abstract
* @param $clientId string идентификатор приложения в системе Яндекс.Деньги
Expand Down Expand Up @@ -214,7 +238,7 @@ public function getClientId() {
return $this->clientId;
}

public static function authorize($clientId, $scope = NULL, $redirectUri = NULL) {
public static function authorizeUri($clientId, $scope = NULL, $redirectUri = NULL) {
if (!isset($clientId) || $clientId == '') {
throw new YandexMoneyException(YandexMoneyException::ERR_MESS_CLIENT_ID, 1001);
}
Expand All @@ -223,9 +247,14 @@ public static function authorize($clientId, $scope = NULL, $redirectUri = NULL)
$scope = YMScope::ACCOUNT_INFO . YMScope::OPERATION_HISTORY;
}
$scope = trim($scope);
$res = self::URI_YM_AUTH . "?client_id=$clientId" .
"&response_type=code&scope=$scope&redirect_uri=$redirectUri";
return $res;
}

header('Location: ' . self::URI_YM_AUTH . "?client_id=$clientId" .
"&response_type=code&scope=$scope&redirect_uri=$redirectUri");
public static function authorize($clientId, $scope = NULL, $redirectUri = NULL) {
header('Location: ' . self::authorizeUri($clientId, $scope, $redirectUri));
die();
}

public function receiveOAuthToken($code, $redirectUri) {
Expand Down

0 comments on commit dd9a252

Please sign in to comment.