2011-08-25 45 views
0

我已將應用程序添加到多個粉絲頁面。 理想情況下,應用程序應根據引用頁面進行自定義工作。 如何檢測應用程序涉及哪個頁面。將頁面引用到應用程序

使用PHP開發Facebook Iframe應用程序。

(問題Facebook的開發論壇上張貼的: http://forum.developers.facebook.net/viewtopic.php?id=108409

THX, 奧倫。

+0

[爲Facebook應用獲取每個標籤頁的唯一ID](http://facebook.stackoverflow.com/questions/5302471/getting-a-unique-id-per-tab-page-for- a-facebook-app) – ifaour

+0

請在查詢之前搜索,歡迎來到SO。 – ifaour

回答

1

正如Page Tab Tutorial

當用戶選擇你的頁面標籤說明,你會收到一個額外的參數,signed_request參數。此參數包含帶有id(當前頁面的頁面ID),admin(如果用戶是頁面的管理員)和喜歡(如果用戶喜歡該頁面)的JSON對象。與Canvas頁面一樣,在用戶授權您的應用程序之前,您不會收到您的應用程序在signed_request中可訪問的所有用戶信息。

1

使用http referer,您將擁有Facebook代理網址。

就你而言,我認爲你必須使用頁面的id(在簽名請求中傳遞)。

0

以下PHP片段將輸出頁面選項卡上收到的signed_request。你會發現你的情況下需要的頁面ID。

<?php 
$appsecret = 'Your App Secret'; 

$signed_request = $_REQUEST['signed_request']; 
$request = $_REQUEST; 

$signed_request = parse_signed_request($signed_request, $appsecret); 

print_r($signed_request); 

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, '-_', '+/')); 
} 
?> 
0

使用新的php-sdk,有一個更快的方法來找出引用頁面。 $ facebook-> getSignedRequest()將返回一個包含簽名請求,授權令牌,頁面和用戶基本信息的數組。

相關問題