![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
|
Ошибка при подтверждении запроса о добавлении записи на стену. Ну то есть при собственно вызове stream.publish со свежеполученной ресигнатурой. Приходящая ошибка говорит, что неверная sig(сигнатура)
Этот метод требует 2 сигнатуры: sig и resig. С resig все понятно, а sig -пересчитывать заново, или использовать тот же, когда запрашивали ForticomAPI.showConfirmation ? |
|
|||||
|
sig пересчитывать не надо
__________________
Сам себе репортер |
|
|||||
|
Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
|
Ок, это выяснил. Правда все равно не работает (. Sig неверный и все.
|
|
|||||
package ru.terbooter.social_api.ok { ... /** * Вспомогательная команда, для отсылки * запросов на сервер ОК с resig * @author terbooter.ru */ public class OKResigRequestCommand{ private var flashVars:Object; private var requestParams:Object; public function OKResigRequestCommand(flashVars:Object) { this.flashVars = flashVars; } /** * Отдадим sig запроса и запомним параметры, * чтобы не передавать их при вызове метода publish * @param params * @return */ public function getSig(params:Object):String { //Переданные параметры могут быть не полными //поэтому подготовим параметры this.requestParams = this.prepareRequestParams(params); //теперь сгенерим sig var sig:String = this._generate_signature(this.requestParams); this.requestParams.sig = sig; return sig; } /** * Вторая фаза публикации на стену. * Поднимая JS окошко с подтверждением * добавления картинки, получили resig * Теперь отправим запрос на сервер ОК * используя этот resig * * @param resig */ public function sendRequest(resig:String):void { ... } /** * Подготовим параметры для запроса. * Заполним недостающие из флэшваров. * лишние уберем. Подробнее в доке ОК * * @param requestParams * @return */ private function prepareRequestParams(params:Object):Object { ... return requestParams; } private function prepareRequest(params:Object):URLRequest { ... return request; } /** * Generates signature * */ private function _generate_signature(request_params:Object): String { var signature:String = ""; var sorted_array: Array = new Array(); for (var key:Object in request_params) { sorted_array.push(key + "=" + request_params[key]); } sorted_array.sort(); // Note: make sure that the signature parameter is not already included in // request_params array. for (key in sorted_array) { signature += sorted_array[key]; } if (request_params.session_key == null) { //signature = signature + this.secret; }else { signature = signature + this.flashVars.session_secret_key; } trace("SIG STRING:",signature); return MD5.encrypt(signature); } ... } } Мне немножко стыдно ![]() Но функция генерирующая сиг взята без изменений с примера приложения в ВК еще 2 года назад. С тех пора она даже не изменялась
__________________
Сам себе репортер |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
|
|
|||||
|
Я имел ввиду саму строку для генерации сига :о)
Другие методы работают отлично? Я тестил сиг на простых методах, ОК при такой ошибке выдает строку, из которой они ждут сиг. Подкорректировал ошибки и паблиш.стрим вообще на ура прошел.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|