mihdan
@mihdan
WordPress-евангелист, ведущий РНР - разработчик

Получение списка друзей из Одноклассников

Из доков по АПИ ( apiok.ru/wiki/display/api/FAPI.init+ru ) видно, что сначала надо проинициализировать сам АПИ. Но тут сразу же возникает затык: rParams пустой. Что я делаю не так?

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="//api.odnoklassniki.ru/js/fapi5.js"></script>
    <script>
        var rParams = FAPI.Util.getRequestParameters(); console.log(rParams);
        FAPI.init(rParams["api_server"], rParams["apiconnection"],
                function() { console.log('ok')},
                function( error ) {  console.log(error); }
        );
    </script>
</head>
<body>

</body>
</html>
  • Вопрос задан
  • 4712 просмотров
Пригласить эксперта
Ответы на вопрос 4
vozhiganov
@vozhiganov
OK API Team
fapi5.js предназначен для игр, которые будут открыты на самих Одноклассниках (вот такие), поэтому если делается просто внешнее приложение/сайт, то для него эта библиотека не подходит.
Ответ написан
Комментировать
Eugene_Sh
@Eugene_Sh
Попробуй заменить строчку:
<script type="text/javascript" src="//api.odnoklassniki.ru/js/fapi5.js"></script>

На:
<script type="text/javascript" src="http://api.odnoklassniki.ru/js/fapi5.js" defer="defer"></script>
Ответ написан
mihdan
@mihdan Автор вопроса
WordPress-евангелист, ведущий РНР - разработчик
Вариантов нет?
Ответ написан
Комментировать
@96467840
в общем дело все в том что в GET параметрах должны присутствовать все параметры приложения apiok.ru/wiki/pages/viewpage.action?pageId=42476523 (и все внутренние переходы-ссылки во фрейме должны их содержать)

вот код функции FAPI.Util.getRequestParameters()
getRequestParameters: function() {
            var l = new Array();
            var g = window.location.search;
            console.log(window.location.href);
            if (g) {
                g = g.substr(1);
                var k = g.split("&");
                for (var h = 0; h < k.length; h++) {
                    var e = k[h].split("=");
                    var f = e[0];
                    var m = e[1];
                    m = decodeURIComponent(m.replace(/\+/g, " "));
                    l[f] = m;
                }
            }
            return l;
        }


в документации выделено:
API должно быть проинициализировано перед первым использованием при помощи метода FAPI.init.

Все параметры, переданные вашему приложению при запуске, рекомендуется копировать в неизменном виде во все навигационные линки внутри айфрейма вашего приложения. По меньшей мере во всех навигационных ссылках должны присутствовать следующие параметры:
•api_server
•apiconnection
•web_server
•application_key
•session_key
•session_secret_key

После каждого перехода нужно повторно производить инициализацию методом FAPI.init.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы