Виджет публикации
Для внешних приложений (например, сайтов или Android/iOS приложений) предусмотрен особый механизм публикации медиатопиков на страницу пользователя (эти записи увидят его друзья в своих лентах) и на страницу группы (только в случае наличия прав на публикацию в группу у пользователя).
Использование виджета возможно только после аппрува приложения. Для получения аппрува отправьте id вашего приложения и URL сайта, с которого будут осуществляться публикации, на адрес: api-support@ok.ru.
Публикация в ленту пользователя
Для публикации необходимо открыть новое окно браузера (или iframe) со специально сформированным URL:
?st.cmd=WidgetMediatopicPost
&st.app={application_id}
&st.attachment={attachment_json}
&st.signature={signature}
&st.return={return_url}
&st.popup={popup}
&st.silent={silent}
&st.utext={text}
&st.nohead={nohead}
Значения всех аргументов URL должны быть закодированы.
Параметр | Обязательный | Описание |
---|---|---|
st.app | Да | Идентификатор приложения (application id) |
st.attachment | Да | Json-кодированная информация о публикуемом медиатопике (см. формат ниже) Можно закодировать json при помощи base64, чтобы избежать избыточного кодирования русских символов. |
st.signature | Да | Цифровая подпись запроса (см. алгоритм подсчета ниже) |
st.return | Нет | URL, на который будет совершён редирект с результатом выполнения. Если не указан, то результат публикации будет передан через HTML5 postMessage |
st.popup | Нет | Выполнять автоматическое центрирование и подгонку размеров окна. Возможные значения: on/off (по умолчанию) |
st.silent | Нет | Закрывать окно автоматически после окончания операции. Игнорируется, если указан st.return. Возможные значения: on/off (по умолчанию) |
st.utext | Нет | Дать возможность пользователю указать свой текст в публикуемом медиатопике. Возможные значения: on/off (по умолчанию) |
st.nohead | Нет | Отображать ли вверху виджета шапку Одноклассников. Возможные значения: on/off (по умолчанию) |
st.access_token | Нет | В случае OAuth приложения - требуется указать access_token |
st.groupId | Нет | В случае необходимости публикации в группу надо указать её id в качестве значения этого параметра |
Публикация в ленту группы
Публикация в группу работает таким же образом, как и публикация в ленту пользователя, — надо открыть новое окно в браузере или iframe со специальным URL формата:
?st.cmd=WidgetMediatopicPost
&st.app={application_id}
&st.groupId={group_id}
&st.attachment={attachment_json}
&st.signature={signature}
&st.return={return_url}
&st.popup={popup}
&st.silent={silent}
&st.utext={text}
&st.nohead={nohead}
Все параметры в URL аналогичны параметрам при публикации в ленту пользователя, но должен присутствовать параметр st.groupId.
Также у пользователя обязательно должны иметься права на публикацию записей в группу (например, он должен быть модератором, либо в группе должна быть включена публикация записей простыми пользователями).
Расчет подписи запроса st.signature
В качестве секретного ключа при передаче параметра st.access_token используется session_secret_key сессии, иначе, используется секретный ключ приложения.
Все значения не должны быть закодированы (кроме случая, когда вы используете base64 для st.attachment).
Если указан параметр st.return, вычисляется следующим образом:
В остальных случаях:
Результат создания топика
Результат зависит от того, использовался ли параметр st.return при создании топика.
Если параметр st.return не использовался, итогом процесса публикации топика должен быть id созданного топика:
Если в результате приходит id = 0, то необходим аппрув приложения, запросить который можно написав на почтовый адрес api-support@ok.ru.
При создании топика с параметром st.return в случае успешного создания топика результатом является ответ в следующем формате:
Возможные параметры ответа:
- type - флаг, успешно ли завершился процесс создания топика. Возможные значения: success, error;
- id - идентификатор созданного топика;
- signature - подпись для валидации ответа на стороне вашего сервиса;
- code - код ошибки, возникшей при создании топика. Есть в ответе только если type=error;
- message - информация об ошибке, возникшей при создании топика. Есть в ответе только если type=error.
Параметр signature подсчитывается по нижеуказанной формуле:
Как указать контент топика
Описание attachment
Публикация медиатопика, который может содержать множество вложенных объектов:
- тексты
- ссылки
- фотографии
- видео
- музыку
- голосования
- решары
- места
Пример результата
Пример результата игрового медиатопика
Общий вид JSON-дерева
Создание решары
Чтобы создать решару на топик или видео нужно в опциональном аттрибуте “topic” или “movie-reshare” задать ID объекта на который создается решара. Если решара устанавливается в статус, то при создании решары текстовой комментарий к объекту обязателен (“type”:”text”)
Пример валидного запроса на создание решары топика (необходимо указать наличие принадлежности к контенту групп, true/false соответственно):
Пример валидного запроса на создание решары видео
Пример валидного запроса на несколько решар в одном топике
Элементы media
Тип | Описание | Дополнительные параметры | Ограничения |
---|---|---|---|
photo | Фотографии | list - список фотографий, описанных одним из двух параметров: * id - параметр token, передаваемый в метод photosV2.commit во время загрузки фотографий на сервер * photoId - id фотографии для которой будет сделана решара | * У приложения должен быть PHOTO_CONTENT * Все фотографии должны принадлежать текущему пользователю * Все фотографии должны находиться в одном и том же альбоме * При посте в группу, фотографии не должны быть привязаны к альбому, и для них не требуется вызывать photosV2.commit * В случае если передаётся photoId фотография должна существовать и быть в открытом доступе |
movie | Видеоролики | list - список видеороликов: * id - идентификатор видеозаписи | * У приложения должен быть VIDEO_CONTENT |
music | Музыка | list - список аудиозаписей: * id - идентификатор * artistName - название исполнителя * title - название аудиозаписи * albumName - (необязательный) название альбома | |
poll | Голосование | * question - вопрос голосования * answers - список ответов к голосованию ** text - текст ответа * options - (необязательный) дополнительные параметры голосования | Возможные параметры: * SingleChoice - Голосование, в котором можно выбрать только один ответ (если не стоит - несколько ответов) * AnonymousVoting - Анонимное голосование (никто не сможет увидеть пользователей, кто как проголосовал) * ResultsAfterVoting - Тип опроса, когда результаты будут видны только после голосования |
link | Ссылка | url - ссылка на интересную страницу | * Не более одной ссылки на медиатопик |
text | Текст | text - дополнительный текст | |
app | Игровой блок | * text - текст над картинкой * images - массив изображений ** url - ссылка на картинку размером 492x364 ** title - текст при наведении на картинку ** mark - метка, которая будет передана приложению в параметре custom_args при переходе * actions- массив ссылок ** text - текст ссылки ** mark - метка, которая будет передана приложению в параметре custom_args при переходе | * На текущий момент поддерживается 1 картинка * На текущий момент поддерживается 1 ссылка * Блок отображается в ленте только у подтверждённых приложений * Нельзя постить только блок app, с ним должен быть ещё text/photo и т.д.. |
app-ref | Ссылка на приложение | appId - id приложения | * Не более 1 ссылки на приложение * Указанное приложение должно пройти модерацию |