Сигнатура метода
Обратите внимание, что публикация топика работает только для приложений, получивших аппрув. Для получения аппрува на работу виджета требуется прислать заявку на api-support@ok.ru
Это устаревшая версия SDK, которое рекомендуется использоваться только для приложений, запускаемых не в iframe
Для игр, запускаемых на Одноклассниках, рекомендуем использовать мультиплатформенное SDK
Метод для публикации топика в ленте пользователя с помощью виджета публикации.
OKSDK.Widgets.post(returnUrl, options)
Где:
- returnUrl - URL, на который будет отправлен пользователь при закрытии окна с виджетом. Необязательный параметр;
- options - дополнительные параметры виджета:
- attachment - содержание публикуемого топика;
- popup - выполнять ли автоматическое центрирование и подгонку размеров окна;
- silent - закрывать окно автоматически после окончания операции. Игнорируется, если указан returnUrl;
- utext - дать возможность пользователю указать свой текст в публикуемом медиатопике;
- nohead - отображать ли вверху виджета шапку Одноклассников.
Полное описание дополнительных параметров доступно здесь, а также возможные блоки контента, которые можно указывать в топике, можно найти на странице виджета публикации.
Return URL message
Если при вызове виджета был указан параметр returnUrl и не указан параметр options.silent, то после выхода пользователя из окна виджета (успешная публикация, отмена публикации, ошибка публикации), он будет перенаправлен на указанный URL с передачей в URL дополнительных параметров.
Список параметров следующий:
- result - результат работы виджета, объект со следующими возможными полями:
- type - общий результат работы виджета, возможны следующие значения:
- success - публикация выполнена успешно;
- error - при попытке публикации произошла ошибка, либо публикация была отменена пользователем.
- code - код произошедшей при публикации ошибки. В случае ошибки смотрите её описание на странице обработка ошибок
- message - описание произошедшей ошибки;
- id - id опубликованного топика. Если у вашего приложения нет аппрува, то id будет равен 0;
- signature - подпись запроса для валидации.
- type - общий результат работы виджета, возможны следующие значения:
Пример при успешной публикации топика
?result={"type":"success","id":"123456789123456","signature":"5c1a50d97a870c2****9d68cda15756"}
Пример при отмене публикации пользователем
?result={"type":"error","code":12,"message":"Operation was cancelled by user"}
Пример при ошибке публикации
?result={"type":"error","code":104,"message":"Bad signature "}
Window postMessage
Если при вызове виджета не был указан параметр returnUrl и был указан параметр options.silent, то после выхода пользователя из окна виджета (успешная публикация, отмена публикации, ошибка публикации) в родительское окно будет отправлен postMessage с информацией о результате работы виджета.
Параметры сообщения (message.data) аналогичны тем, что передаются в параметре result при указании return URL.
Пример при успешной публикации
{
"id": "69704158565649"
}
Пример при отмене публикации пользователем
{
"error_code": "12",
"error_msg": "Operation was cancelled by user",
"message": "Operation was cancelled by user",
"error": "12"
}
Пример при ошибке публикации
{
"column": "0",
"error_code": "4",
"error_msg": "Invalid JSON at line 0 and column 0",
"message": "Invalid JSON at line 0 and column 0",
"error": "4",
"line": "0"
}
Таким образом, можно задать eventListener, который будет каким-то образом обрабатывать это сообщение:
window.addEventListener('message', function (widgetMessage) {
console.log(JSON.stringify(widgetMessage.data));
// обрабатываете сообщение от виджета здесь
}, false);
Пример вызова
Пример вызова с returnUrl
OKSDK.Widgets.post(
"https://some-return-url.com",
{
"attachment": {
"media": [
{
"type": "text",
"text": "Смотри какая новость"
},
{
"type": "link",
"url": "https://mail.ru/"
}
]
}
}
)
Пример вызова с postMessage
OKSDK.Widgets.post(
null,
{
"attachment": {
"media": [
{
"type": "text",
"text": "Играй и получай бонусы!"
},
{
"type": "app-ref",
"appId": 194424064
}
]
},
"silent": true
}
)
В результате вызова метода пользователю будет показано окно с превью топика, где он может подтвердить или отменить его публикацию: