gpt4 book ai didi

java - 在 facebook 中解析 signed_request

转载 作者:行者123 更新时间:2023-12-03 20:18:22 25 4
gpt4 key购买 nike

我正在尝试在 32 位操作系统中解析 facebook signed_request。 用于在 64 位操作系统中解析 signed_request 的 java 代码工作正常。 当我在 32 位操作系统中使用修改后的代码时, 它给出以下错误“位置 0 处的意外字符 (£)”。 请帮助我确定问题所在。

if (request.getParameter("signed_request") != null)
{
signed_request = request.getParameter("signed_request");
//out.print("<br>signed_request: "+signed_request);
try
{
System.out.println("signed_request"+signed_request);
System.out.println("signed_request1");
fb_data = parse_signed_request(signed_request, secretKey);
}
catch(Exception e)
{
System.out.println("error"+e);
}
}





public static Map parse_signed_request(String input, String secret) throws Exception {
return parse_signed_request(input, secret, 3600);
}

public static Map parse_signed_request(String input, String secret, int max_age) throws Exception {
String[] split = input.split("[.]", 2);

String encoded_sig = split[0];
String encoded_envelope = split[1];
JSONParser parser = new JSONParser();
Map envelope = (Map) parser.parse(new String(base32_url_decode(encoded_envelope)));

String algorithm = (String) envelope.get("algorithm");

if (!algorithm.equals("HMAC-SHA256")) {
throw new Exception("Invalid request. (Unsupported algorithm.)");
}

if (((Long) envelope.get("issued_at")) < System.currentTimeMillis() / 1000 - max_age) {
throw new Exception("Invalid request. (Too old.)");
}

byte[] key = secret.getBytes();
SecretKey hmacKey = new SecretKeySpec(key, "HMACSHA256");
Mac mac = Mac.getInstance("HMACSHA256");
mac.init(hmacKey);
byte[] digest = mac.doFinal(encoded_envelope.getBytes());

if (!Arrays.equals(base32_url_decode(encoded_sig), digest)) {
throw new Exception("Invalid request. (Invalid signature.)");
}

return envelope;
}

最佳答案

使用base64 方法解码JSON 对象。无需修改为 base32,因为它与操作系统没有关联。架构。

修正缺陷:

Map envelope = (Map) parser.parse(new String(base64_url_decode(encoded_envelope)));

关于java - 在 facebook 中解析 signed_request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com