Неполная подписанная строка запроса json?

Когда facebook загружает мое приложение в iframe, я получаю в данных POST параметр signed_request, а затем беру часть после "." и декодируйте это с помощью base64, чтобы получить строковое представление json подписанного запроса.

По какой-то причине строка json, которая декодируется из подписанного запроса, является неполной и выглядит так (отформатирована для удобства чтения):

{
    "algorithm": "HMAC-SHA256",
    "expires": xxxxxxxxxxx,
    "issued_at": xxxxxxxxxx,
    "oauth_token": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "user": {
        "country": "il",
        "locale": "en_US",
        "age": {
            "min": 21
        }
    },
    "user_id":"xxxxxxxxx

user_id правильный и полный, но в остальной части строки отсутствуют закрывающая двойная кавычка и закрывающая скобка. Это происходит со мной каждый раз, когда мое приложение находится в режиме песочницы.

Любые идеи, почему это происходит? Спасибо.


Редактировать

Я проверил, что это не какая-то ошибка декодирования в моей программе, я скопировал публикуемый контент и проверил его в онлайн-декодер и получил точно такой же результат.


person Nitzan Tomer    schedule 22.03.2012    source источник
comment
Привет, Поскольку вы смогли расшифровать signed_request, не могли бы вы предложить мне, как это сделать. Я не могу это сделать, вот мой вопрос stackoverflow.com/questions/9917547/   -  person pal4life    schedule 29.03.2012
comment
У меня точно такая же проблема в моей производственной среде (режим без песочницы), но не в среде разработки (режим песочницы), очень странно... пожалуйста, обновите, если у вас есть какое-либо решение!   -  person DaveB    schedule 01.04.2012


Ответы (2)


Я решил эту же проблему, обновив кодек Commons 1.6.

person DaveB    schedule 02.04.2012
comment
Какой? Вы говорите, что это проблема с декодером, который я использую? Но онлайн-декодер, который я тестировал, дал точно такой же результат, они тоже используют неисправный декодер? (Я проверю то, что вы говорите, но потребуется некоторое время, чтобы моя среда была готова к этому) - person Nitzan Tomer; 02.04.2012
comment
Я столкнулся с той же проблемой, мне было легко обновить библиотеку кодеков Commons, но вы могли просто добавить символы вручную. Посмотрите здесь qugstart.com/blog /руби-и-рельсы/ - person DaveB; 03.04.2012
comment
Спасибо за информацию. На самом деле я не проверял то, что вы говорите (с кодеком 1.6), и потребуется некоторое время, прежде чем я смогу это сделать. Добавление отсутствующих символов - это то, что я сделал, но вряд ли это решение, скорее обходной путь. - person Nitzan Tomer; 03.04.2012
comment
Просто хотел убедиться, что замена кодека commons на новую версию (1.6) устранила проблему. Спасибо. - person Nitzan Tomer; 21.04.2012

Это сработало для меня (обрезка строки и добавление замыкающей скобки):

String jsonString = new String(Base64.decodeBase64(payload.getBytes())).trim(); jsonString = jsonString + "}";

person Richard Lovell    schedule 25.01.2013