Я использую SageOne API PHP Library. Он работает нормально, но я получаю сообщение об ошибке, если попытаюсь использовать get
или post
.Ошибка Sage One API
Ошибка,
только переменные должны быть переданы по ссылке sage.api.php на линии 130
Мой get
код запроса
$client = new SageOne(SAGE_CLIENT_ID, SAGE_CLIENT_SECRET);
$client->setAccessToken("c7c7547xxxxxxxxxxxx8efa4f5df08f750df");
$data = array();
$result = "";
$client = $client->get('/products', $data);
Я не» Знаю, что случилось.
Полный код
require 'sage.api.php';
define('SAGE_CLIENT_ID', "fa1e8c1b114347a356d2");
define('SAGE_CLIENT_SECRET', "faaa7b353521f823ba13e3a20e72dd057c3a5fd1");
$client = new SageOne(SAGE_CLIENT_ID, SAGE_CLIENT_SECRET);
$callbackURL = 'xxxxx/addonmodules.php?module=sageone';
// We need to build the authorise url and redirect user to authorise our app
if(!$_GET['code']){
$authoriseURL = $client->getAuthoriseURL($callbackURL);
// redirect user
header("Location: ".$authoriseURL);
exit;
// We now have the authorisation code to retrieve the access token
} else {
$accessToken = $client->getAccessToken($_GET['code'], $callbackURL);
$token= $accessToken['access_token'];
$end = 'public';
$data ='';
$result = $client->get($end, $data);
echo '<pre>';
print_r($result);
фрагменты кода из sage.api.php
class SageOne { ...
...
public function get($endpoint, $data=false){
return $this->call($endpoint, 'get', $data);
}
...
// error line 130 from this code
private function buildSignature($method, $url, $params, $nonce){
// uc method and append &
$signature = strtoupper($method).'&';
// percent encode bit of url before ? and append &
$signature .= rawurlencode(array_shift(explode('?', $url))).'&';
// percent encode any params and append &
if (is_array($params)){
// sort params alphabetically
$this->ksortRecursive($params);
// build query string from params, encode it and append &
$signature .= str_replace(
array('%2B'),
array('%2520'),
rawurlencode(http_build_query($params, '', '&'))
).'&';
// params can be string
} else {
// build query string from params, encode it and append &
$signature .= rawurlencode($params).'&';
}
// add 'nonce' - just use an md5
$signature .= $nonce;
// now generate signing key
$signingKey = rawurlencode($this->signingSecret).'&'.rawurlencode($this->accessToken);
// encode using sha 1, then base64 encode
$finalSignature = base64_encode(hash_hmac('sha1', $signature, $signingKey, true));
return $finalSignature;
}
Это самый короткий я могу сделать, чтобы увидеть все важные код
Я попробовал сейчас $ end = "/ public"; $ data = ""; $ client2-> get ($ end, $ data); но такая же ошибка ... – arcronis
Это кажется странным для меня, @arcronis. Вы уверены, что ошибка создается одним и тем же кодом. Попробуйте создать * минимальный рабочий пример * (т. Е. Полный фрагмент кода, который является таким же коротким и простым, как это может быть), и добавив его к вашему вопросу. – TRiG
Я добавил еще код, я думаю, так что вы можете видеть, что важно – arcronis