方案
Facebook应用程序驻留在用户A的个人资料中(在名为Welcome的选项卡中)。用户A可以填写欢迎消息并更新消息。
用户B访问用户A的个人资料,单击“欢迎”选项卡并查看用户A写入的欢迎消息。
我了解如何完成大部分应用程序和映像,我将根据与用户A的Facebook ID相关联字段的数据库查找生成响应。
我不明白的是如何获取安装APP实例(用户A)的用户的用户ID值,或者如何获取用户B当前所在的配置文件的用户ID(也是碰巧是用户A)。
关于如何最好地攻击这个的任何想法?
答案 0 :(得分:0)
找到答案。当您的应用程序作为选项卡安装时,用户的配置文件以及其他参数将以编码字符串形式传递。以下是我如何拉取profile_id的示例。
function getProfileID($post){
global $FB_secret;
$SR = $post['signed_request'];
$PSR = parse_signed_request($SR,$FB_secret);
return $PSR['profile_id'];
}
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
添加这些功能,然后在某处添加以下命令:
$profile_user = getProfileID($_POST);
请注意,该脚本假定您将秘密密钥值分配给$ FB_secret以使其正常工作。