Модератор форума: JonMagon  
Сообщество uCoz » Мастерская uCoz » Использование PHP и API на uCoz » Базовое API на uCoz
Базовое API на uCoz
Модератор форума
Сообщение # 1 | 15:36:48
В марте 2011 в системе uCoz появилась возможность использовать функционал API.

АPI - это бесплатная возможность, её нужно просто активировать в Основных настройках сайта.

Инструкция по включению и использованию данной возможности находится ЗДЕСЬ.


В этой теме разрешается обсуждать данную возможность, делиться опытом, вносить конструктивные предложения.

ОБНОВЛЕНИЯ

  • [13.05.2011] Добавлена возможность использовать ключ (API key) для базового API.

    Данная возможность позволяет разрешить использование API только для тех, кто знает ключ. Для всех остальных API не будет работать. Включить эту возможность можно в панели управления в разделе “Настройки” → “Общие настройки” → “Использовать API key”. Ключ генерируется автоматически.

    Если вы захотите изменить уже существующий ключ, то отключите и включите заново эту опцию, затем сохраните изменения.

    Использовать API при наличии ключа нужно посредством GET-запроса следующим образом:
    http://SITE_ADDRESS/api/MODULENAME/ANYRELPATH?apikey=APIKEY


sch779
Сообщений: 703
Репутация: 348

Сообщение # 226 | 16:29:47
Цитата (mathProgr)
Выдает только 10 первых материалов. Есть ли страница, куда отправить запрос для вывода всех материалов?
Нет, такого запроса нет - система выдает материалы согласно настройкам модуля. Указано в настройках 10 материалов на странице - она столько и выдает.
Для получения следующих 10 материалов надо давать следущий запрос с указанием номера страницы. И т.д.
Только следует учесть, что неправильно будет исползовать простой цикл для чтения страниц через API!
Дело в том, что запрос выполняется асинхронно и после отправки первого запроса цикл сразу отправит второй запрос и т.д.
И результаты выполнения каждого запроса могут прийти от сервера не обязательно в порядке их отправки!
Поэтому, если необходима четкая последовательная выборка страниц, то следующий запрос надо давать в функции получения ответа предыдущего запроса.
Ну, или получать все ответы "как прийдется" и после этого сортировать все материалы по их ID или дате/времени.

Я в своих информерах использую первый вариант, потому что мои информеры могут выдавать заданное количество первых или последних материалов.
mathProgr
Сообщений: 6
Репутация: 1

Сообщение # 227 | 18:01:51
sch779, спасибо. Уже написал решение для своего сайта.
Ferro7
Сообщений: 285
Репутация: 230

Сообщение # 228 | 16:25:40
Цитата (mathProgr)
sch779, спасибо. Уже написал решение для своего сайта.


Было бы интересно на него (решение) посмотреть smile

Вы полюбили меня. Здесь я. (с)
mathProgr
Сообщений: 6
Репутация: 1

Сообщение # 229 | 18:16:58
Цитата (Ferro7)
Было бы интересно на него (решение) посмотреть

Решение корявенькое, особенно учитывая замечание про асинхронность выше (я не сильно мастер пхп), но, в-общем, работает. Идея такова:

<?php
$___notjson=1;
$user_id=$_GET['id'];
$page_id=1;
$num=1;
$host=$_SERVER['HTTP_HOST'];
$xml=file_get_contents("http://$host/api/load/0-$page_id-$user_id-0-17");
$xml2=xmlrpc_decode($xml,"utf8");
$xmlcontrol=$xml2;

while (($xmlcontrol!=$xml2)||($page_id==1)){
foreach($xml2 as $mat){
print($num.'. '.$mat{'TITLE'}."<br>"); //тут делаем чего нам надо
$num+=1;
}
$page_id+=1;
$xml=file_get_contents("http://$host/api/load/0-$page_id-$user_id-0-17");
$xml2=xmlrpc_decode($xml,"utf8");
}
?>
Сообщение отредактировал mathProgr - Суббота, 16 Мар 2013, 18:18:32
LucasTotola
Сообщений: 2
Репутация: 0

Сообщение # 230 | 18:29:03
Добрый день.
У меня такой вопрос: Как получить профиль пользователя зная его ник (не ID).
Перечитав доки по API ничего подобного не нашёл, и пришёл к выводу что придётся циклом проходить по всем ID и искать нужного, но это больная нагрузка как на Вас так и на Меня.
Существует более адекватный способ получить данные профиля, зная ТОЛЬКО ник?

Добавлено (23 Мар 2013, 18:05:25)
---------------------------------------------
Отвечаю на свой вопрос.
Запрос к профилю пользователя по его нику делается так:

Код
$GET_URL = sprintf("http://%s/api/index/8-0-%s?apikey=%s",$UCOZ_SITE,$PlayerNick,$UCOZ_APIKEY);

Добавлено (23 Мар 2013, 18:29:03)
---------------------------------------------
И появился следующий вопрос, как сделать запрос не от имени гостя а от специально созданного пользователя?
А точнее, как авторизоваться, используя API?

SOFTOLAB_COM
Сообщений: 1363
Репутация: 777

Сообщение # 231 | 03:02:19
LucasTotola, к сожалению сейчас очень мало экстрасенсов осталось на данном форуме, все они участвуют в битве на телеканале ТНТ, а в данном случае помочь смогут только они...

Юзайте Curl...

Благодарности можно оставить — в репутации.
Помощью в ЛС не занимаюсь, есть форум.
Занимаюсь сайтами на платной основе.
Шаманю на php и mysql с использованием бубна 80 lvl.
LucasTotola
Сообщений: 2
Репутация: 0

Сообщение # 232 | 02:44:26
SOFTOLAB_COM, А знаете, я описал свою проблему предельно ясно, так что ваш сарказм показал Вас с другой стороны.
За то время, пока я на официальном форуме ждал ответа, уже сам написал класс для работы с основными функциями юзока, как GET через API, так и SET через CURL.
SOFTOLAB_COM
Сообщений: 1363
Репутация: 777

Сообщение # 233 | 06:44:19
LucasTotola, я очень рад за вас...

Благодарности можно оставить — в репутации.
Помощью в ЛС не занимаюсь, есть форум.
Занимаюсь сайтами на платной основе.
Шаманю на php и mysql с использованием бубна 80 lvl.
SOFTOLAB_COM
Сообщений: 1363
Репутация: 777

Сообщение # 234 | 08:55:00
А кто путем тестов выяснял проживет ли кука авторизации на сайте те 2 месяца, которые указываются в её времени жизни?
Или она станет не действительной гораздо раньше?

Благодарности можно оставить — в репутации.
Помощью в ЛС не занимаюсь, есть форум.
Занимаюсь сайтами на платной основе.
Шаманю на php и mysql с использованием бубна 80 lvl.
Любительница_животных
Сообщений: 60
Репутация: 0

Сообщение # 235 | 13:53:32
Мне нужно вывести на главной названия материалов пользователя и ссылки на них из нескольких модулей(каждый пользователь должен видеть свои). Реально ли сделать это спомощью API,используя js?
JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 236 | 15:13:55
Любительница_животных, реально, но гораздо лучше на php это сделать.
http://partner.ucoz.ru/

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
Kevin_Alstreim
Сообщений: 1
Репутация: 0

Сообщение # 237 | 16:17:07
Добрый день. Подскажите пожалуйста каково ограничение на количество API запросов с одной страницы. API запросы только на аватарки со страниц пользователей, сам скрипт запросов находится внутри <head></head>, но запускается в <body>. (аналогично дополнительной информации на главной странице этого форума ).
Есть желании сделать вывод аватарок возле автора последнего сообщения на форуме (примерно 30 запросов на аватарки с одной страницы), но боюсь временного бана IP.
Fifamania
Сообщений: 2
Репутация: 2

Сообщение # 238 | 02:03:23
Я хочу получить некоторый контент с помощью PHP, из URL, где я нахожусь
например мой URL следующем:
http://www.ufilme.ro/load....-0-3543
и API URL
теперь, как с помощью PHP я могу получить название этой странице?
Я имею в виду не получить титул только с этой страницы, но, чтобы получить титул со страницы, где пользователь просматривает

Так как с помощью PHP я могу получить
www.site.com/api/load/название/id ?

Добавлено (02 Июн 2013, 02:03:23)
---------------------------------------------
Как заставить его работать

Код
<?$PHPCODE$("http://ufilme.ro/php/ucoz.php?link=http://ufilme.ro\'.$REQUEST_URI$.\'")?>

SOFTOLAB_COM
Сообщений: 1363
Репутация: 777

Сообщение # 239 | 20:55:03
Kevin_Alstreim, правильно боитесь, бан за 30 запросов будет гарантирован.

Fifamania, http://forum.ucoz.com

Благодарности можно оставить — в репутации.
Помощью в ЛС не занимаюсь, есть форум.
Занимаюсь сайтами на платной основе.
Шаманю на php и mysql с использованием бубна 80 lvl.
Kelin
Сообщений: 44
Репутация: 58

Сообщение # 240 | 19:18:58
Я так понимаю, API дорабатывать никто не собирается? А зря, ибо в нем нет половины данных, только основные поля (Название, текст материала), а где дополнительные (other1, other2) ?
Сообщество uCoz » Мастерская uCoz » Использование PHP и API на uCoz » Базовое API на uCoz
Поиск: