java - 使用 Java 解析 Facebook signed_request 返回格式错误的 JSON

标签 java json facebook

我正在尝试在 Java Servlet 的 doPost 中解析 Facebook signed_request。我使用 commons-codec-1.3 的 Base64 解码签名请求。 这是我在 servlet 的 doPost

中使用的代码
String signedRequest = (String) req.getParameter("signed_request");
String payload = signedRequest.split("[.]", 2)[1];
payload = payload.replace("-", "+").replace("_", "/").trim();
String jsonString = new String(Base64.decodeBase64(payload.getBytes()));

当我 System.out jsonString 时,它的格式是错误的。有时它会错过 JSON 的结尾 } 有时它会遗漏字符串末尾的 "}

如何从 Facebook 获得正确的 JSON 响应?

最佳答案

facebook 对 URL 使用 Base64,您可能正在尝试使用标准 Base64 算法对文本进行解码。 除其他事项外,URL 变体不需要用“=”填充。

  1. 您可以在代码中添加所需的字符(填充等)
  2. 您可以使用 commons-codec 1.5 ( new Base64(true)),他们在其中添加了对此编码的支持。

关于java - 使用 Java 解析 Facebook signed_request 返回格式错误的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7406257/

相关文章:

c# - Json.NET 自定义 ValueProvider 将 Objects 转换为 Guid

javascript - 通过单击另一个 div 更改 div 中的数据

ios - 传递参数以将项目发布到 Facebook

c# - Facebook C# SDK授权问题

ios - Swift Facebook 登录 AppID 未注册为 URL Scheme

java - 你能改变println的字体大小吗?

java - 从 MAP 检索数据时如何避免 JSON 数组下的双方括号

使用 ByteArrayStream 时 Java Applet 速度很慢

java - java中的用户界面

javascript - 嵌套数组对象与另一个元素数组进行比较并使用 Javascript 或 ES6 创建新数组