2011-11-19 117 views
0

我已经创建了一个应用程序并将其连接到粉丝页面,以便应用程序内容被加载到该页面中。Facebook粉丝页面上的用户数据应用程序

要访问user_id和用户名称只能在用户授权应用程序时访问。

如何在用户喜欢页面的同时授权应用程序?

我的意思是当用户点击页面按钮时,应用程序授权对话框也应该出现。或者,如果我错了,请建议正确的方法。

---编辑----

我使用PHP-SDK V3.1.1。

回答

0

这是不可能的,像按钮这样的页面没有以任何方式连接到您的应用程序。

你可以做的是解析传递给你的应用程序的signed_request参数,以检查用户是否喜欢该页面,如果他确实可以检查是否可以获得用户对象并在需要时将其重定向到授权。

如果您不需要用户标识或任何其他扩展功能(例如张贴到墙上)并且只想检查用户是否喜欢该页面,则可以使用签名的请求并忘记其余的授权。

可以解码signed_request使用应用程序密钥和下面的函数:

function parse_signed_request_outside($signed_request, $secret) { 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    // decode the data 
    $sig = base64_url_decode_outside($encoded_sig); 
    $data = json_decode(base64_url_decode_outside($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_outside($input) { 
    return base64_decode(strtr($input, '-_', '+/')); 
} 

为了确定等等,你需要做到以下几点:

$secret = "SECRET KEY"; 

$decodedSignedRequest = parse_signed_request_outside($_REQUEST['signed_request'], $secret); 

if ($decodedSignedRequest['page']['liked'] == 1){ 
{ 
    // load content 
}