Я пытаюсь проанализировать JSON Sign_Request, который вы получаете от Facebook в Perl, но мне нужна небольшая помощь!
($encoded_sig, $payload) = split('\.', $formdata{'signed_request'});
$sig = decode_base64url($encoded_sig);
$data = decode_json(decode_base64url($payload));
%decoded = %{ decode_json(decode_base64url($payload)) };
$expected_sig = hmac_sha256($payload, $app_secret);
if ($expected_sig eq $sig) {
while (my ($key, $value) = each %decoded) {
print "$key = $value\n<br>";
}
}
Каждое значение $ может содержать строку или ссылку на другой HASH (а некоторые из этих HASH могут содержать другой HASH), есть ли лучший способ обработать это?
Сценарий выше возвращает:
algorithm = HMAC-SHA256
page = HASH(0x632b100)
issued_at = 1323081670
user = HASH(0x632b150)
и json, полученный после декодирования:
{"algorithm":"HMAC-SHA256","issued_at":1323081670,"page":{"id":"192130540873448","liked":true,"admin":true},"user":{"country":"gb","locale":"en_GB","age":{"min":21}}}
В идеале хотелось бы увидеть результат:
algorithm = HMAC-SHA256
page-id = 192130540873448
page-liked = true
page-admin = true
issued_at = 1323081670
user-country = gb
user-locale = en_GB
user-age-min = 21
Структура данных будет увеличиваться, поскольку после ответа авторизованного пользователя из Facebook будет предоставлено больше данных.
Большое спасибо