检索Facebook用户ID?是否有必要签署请求?

时间:2012-12-21 22:24:21

标签: php facebook sdk

我正在阅读关于创建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 个答案:

答案 0 :(得分:0)

我如何解决它是这样的。 Facebook应用程序总是要求一个画布网址(安全和非安全)。我创建了一个启动网址,当用户进入我的网页时,他们总是输入启动网址。这是我设置以下代码的地方。一旦我获得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
 }