Перейти к содержимому


Фотография

Помогите разобраться с api


  • Пожалуйста, авторизуйтесь, чтобы ответить
6 ответов в этой теме

#1 Iren_airs

Iren_airs

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Опубликовано 22 Октябрь 2014 - 14:18

Добрый день!

У меня сайт на php, и есть площадка на адмидат под него.

Получила ключ и id api.

Хочу сделать клиенскую авторизацию.

Установила admidat - php - api

код: 

$dir = $_SERVER["DOCUMENT_ROOT"];
include $dir.'/lib/vendor/autoload.php';
$clientId = 'мой id';
$redirectUri = 'мой сайт';
$scope = 'public_data';

$api = new Admitad\Api\Api();

$authorizeUrl = $api->getAuthorizeUrl($clientId, $redirectUri, $scope);

$clientSecret = 'мой ключ';

if ($_GET['code']){
  $code = $_GET['code'];
  $response = $api->requestAccessToken($clientId, $clientSecret, $code, $redirectUri);
  $result = $response->getResult();
} else {
   echo '<script type="text/javascript">window.location = "'.$authorizeUrl.'";</script>';
} 

класс Admitad\Api\Api() подключился и переход по ссылке $authorizeUrl возвращает code, но дальше $response = $api->requestAccessToken($clientId, $clientSecret, $code, $redirectUri); не возвращает ничего, ни исключений ни ошибок ни данных. В чем может быть проблема?  Что я делаю неправильно?

Заранее благодарю!

 

 



#2 cpasoft.ru

cpasoft.ru

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 405 сообщений

Опубликовано 22 Октябрь 2014 - 17:38

не возвращает ничего, ни исключений ни ошибок ни данных.

 

 

ошибку должно вернуть в любом случае

$response = $api->requestAccessToken($clientId, $clientSecret, $code, $redirectUri);

var_dump($response);


#3 Iren_airs

Iren_airs

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Опубликовано 22 Октябрь 2014 - 18:23

и var_dump($response); тоже пусто. через curl https://www.admitad.com недоступен. Протокол моего сервера имеет значение?

как проверить, что для моей площадки есть ответы с адмидат? Не могли бы вы написать пример прямого запроса на php?  



#4 cpasoft.ru

cpasoft.ru

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 405 сообщений

Опубликовано 22 Октябрь 2014 - 18:31

у меня это выглядит так

    /*
     * Получение ключа API
     */
    public static function get_access_token($code, $secret_key, $client_id, $domain)
    {
        $url = 'https://api.admitad.com/token/?'; // урл запроса ключа
     
        $post = 'code='.$code.'&client_secret='.$secret_key.'&grant_type=authorization_code&client_id='.$client_id.'&redirect_uri='.$domain;
        $access_token = self::curl( $url, $post );
        return $access_token;
    }

    /**
     * Возвращает данные после curl запроса к серверу API
     *
     * @param $url          - url запроса
     * @param $post         - post параметры запроса
     * @param $access_token - ключ для запросов к API
     * @return array
     */
    
    public static function curl ($url, $post = false, $access_token = false)
    {
        $ch = curl_init();
    
        curl_setopt( $ch, CURLOPT_URL,            $url );
        curl_setopt( $ch, CURLOPT_HEADER,         false);
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
        if ( $access_token )
            curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $access_token ) );
        if ( $post )
        {
            curl_setopt( $ch, CURLOPT_POST,           true );
            curl_setopt( $ch, CURLOPT_POSTFIELDS,     $post);
        }
        $data = curl_exec($ch);
        curl_close($ch);
        $answer = json_decode($data, true);
        return $answer;
    }
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
 
вот на эти строчки обрати внимание, там https, + к этому данные постом отправлять надо
 
у тебя на домене SSL  сертификат стоит?


#5 Iren_airs

Iren_airs

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Опубликовано 23 Октябрь 2014 - 15:10

нет не стоит SSL. Это обязательно?



#6 cpasoft.ru

cpasoft.ru

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 405 сообщений

Опубликовано 23 Октябрь 2014 - 15:25

https://developers.a...th/auth-iframe/



#7 Iren_airs

Iren_airs

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Опубликовано 23 Октябрь 2014 - 16:16

Спасибо! Разобралась.






Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей