2012-12-21 44 views
0

我讀上創建一個Facebook應用程序,Facebook的教程,檢索Facebook用戶名?是否需要簽名的請求?

http://developers.facebook.com/docs/appsonfacebook/tutorial/

這是他們給我提供的代碼。他們說在用戶接受我的應用程序的權限以檢索他們的信息後立即運行它。

<?php 

    $app_id = "YOUR_APP_ID"; 

    $canvas_page = "YOUR_CANVAS_PAGE_URL"; 

    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
      . $app_id . "&redirect_uri=" . urlencode($canvas_page); 

    $signed_request = $_REQUEST["signed_request"]; 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

    if (empty($data["user_id"])) { 
      echo("<script> top.location.href='" . $auth_url . "'</script>"); 
    } else { 
      echo ("Welcome User: " . $data["user_id"]); 
    } 
?> 

在本教程中,他們說在用戶接受您的應用程序後運行代碼。這是唯一一次我能夠獲得用戶ID?是否有必要擁有signed_request或者我可以在以後檢索後,他們已經接受了我的申請權限

感謝

+1

如果我沒有記錯的話,你可以隨時運行此代碼。如果沒有'$ data [「user_id」]'你將被重定向到auth-page。從那裏你可以選擇將「$ signed_request」或「$ data」存儲在cookie或數據庫中。我也想我記得你可以重新使用'$ signed_request'來運行API的其他查詢(在其他函數或頁面中)。更新,你也可以將它存儲在會話變量中。 – Neograph734

回答

0

我怎麼解決的就是這個樣子。 Facebook應用程序總是要求畫布網址(安全和不安全)。我創建了一個啓動url,當用戶進入我的頁面時,他們總是輸入啓動url。這是我設置下面的代碼。一旦我得到了user_id我設置爲一個會話,我將它們重定向到應用程序的儀表板。有我在哪裏可以檢索用戶ID並做我想要的。

www.yourwebsite.com/initiate/

$app_id = "YOUR_APP_ID"; 

$canvas_page = "YOUR_CANVAS_PAGE_URL"; 

$auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($canvas_page); 

$signed_request = $_REQUEST["signed_request"]; 

list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

if (empty($data["user_id"])) { 
     echo("<script> top.location.href='" . $auth_url . "'</script>"); 
} else { 
     $data["user_id"];//Set the data to a session or db then redirect user to the page 
     //you want them to be 
} 
相關問題