2011-11-19 89 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 
} 
相關問題