我正在尝试在 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 变体不需要用“=”填充。
- 您可以在代码中添加所需的字符(填充等)
- 您可以使用 commons-codec 1.5 ( new Base64(true)),他们在其中添加了对此编码的支持。
关于java - 使用 Java 解析 Facebook signed_request 返回格式错误的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7406257/