Задать вопрос
@eskrano

Как подписать запрос?

Доброй ночи! Подключаю игру знакомого (мобильную) к однолкассникам. Авторизацию и регистрацию ему сделал. Осталось всеголишь оплату, но никак не могу правильно сгенерировать sig. Документацию читаю 2й день, примера нету совершенно никакого как правильно подписывать запрос... При переходе по ссылке
<a href="http://m.odnoklassniki.ru/api/show_payment?application_key=CBAQOQGFEBABABABA&session_key=2d30a5d5e03710d0d594b19870b349de42231ae265b6021a0582.7feca3&sig=98ce5ccbf6c5b3c372f3750cb3581876&name=gold&code=1&price=1"></a>
возвращает ошибку что сигнатура не верная.. Никак не могу ее сгенерировать. Кто подключал сайты к одноклассникам? Как вы генерировали подпись?
  • Вопрос задан
  • 664 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Vjaka
@Vjaka
Платформа игр (Одноклассники)
Подпись генерируется как обычно в апи вызовах - для всех параметров кроме sig и access_token

function calcSignature(query) {
        var i, keys = [];
        for (i in query) {
            keys.push(i.toString());
        }
        keys.sort();
        var sign = "";
        for (i = 0; i < keys.length; i++) {
            var key = keys[i];
            if (("sig" != key) && ("access_token" != key)) {
                sign += keys[i] + '=' + query[keys[i]];
            }
        }
        sign += SESSION_SECRET_KEY;
        sign = encodeUtf8(sign);
        return md5(sign);
    }
        var params = {};
        params['name'] = NAME;
        params['price'] = PRICE;
        params['code'] = CODE;
        params["application_key"] = APPKEY;
        if (SESSION_KEY) {
            params["session_key"] = SESSION_KEY;
        } else {
            params["access_token"] = ACCESS_TOKEN;
        }
        params['sig'] = calcSignature(params, SESSION_SECRET_KEY);

        var query = 'https://m.ok.ru/api/show_payment?';
        for (var key in params) {
            if (params.hasOwnProperty(key)) {
                query += key + "=" + encodeURIComponent(params[key]) + "&";
            }
        }

        window.open(query);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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