当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正确且完整,但其余字符串缺少结束双引号和结束括号。 每次使用我的应用程序时都会发生这种情况,这是在沙盒模式下。
为什么会发生这种情况的任何想法? 感谢。
我检查过我的程序中没有一些解码错误,我复制了正在发布的内容并在online decoder中检查了它并获得了完全相同的结果。
答案 0 :(得分:1)
我通过更新为commons codec 1.6
解决了同样的问题答案 1 :(得分:1)
这对我有用(修剪字符串并添加尾随括号):
String jsonString = new String(Base64.decodeBase64(payload.getBytes()))。trim(); jsonString = jsonString +“}”;