2012-12-21 45 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 
} 
相关问题