php - 如何通过 php 或 javascript 从 facebook 身份验证示例获取用户电子邮件

标签 php javascript facebook facebook-graph-api facebook-fql

我的网站上有一个照片库,我需要 Facebook 身份验证才能查看它并收集姓名/电子邮件地址。到目前为止,我已经转到[这里][1]并读到我尝试了有效的php示例,但我对如何在身份验证时获取用户名/电子邮件感到困惑?我使用了这个,但在示例中为什么“代码”为空,以及如何获取用户的信息,例如示例中如何获取“状态”。另外,在我的版本中,它只是触发重定向,为什么在示例中永远不会满足第二个条件?

示例:

 <?php 

   $app_id = "YOUR_APP_ID";
   $app_secret = "YOUR_APP_SECRET";
   $my_url = "YOUR_URL";

   session_start();
   $code = $_REQUEST["code"];

   if(empty($code)) {
     $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
     $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
       . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
       . $_SESSION['state'];

     echo("<script> top.location.href='" . $dialog_url . "'</script>");
   }

   if($_REQUEST['state'] == $_SESSION['state']) {
     $token_url = "https://graph.facebook.com/oauth/access_token?"
       . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
       . "&client_secret=" . $app_secret . "&code=" . $code;

     $response = @file_get_contents($token_url);
     $params = null;
     parse_str($response, $params);

     $graph_url = "https://graph.facebook.com/me?access_token=" 
       . $params['access_token'];

     $user = json_decode(file_get_contents($graph_url));
     echo("Hello " . $user->name);
   }
   else {
     echo("The state does not match. You may be a victim of CSRF.");
   }

 ?>

最佳答案

要获取用户电子邮件,您需要授予所需的权限,例如电子邮件 ( more )

试试这个..

require_once "facebook.php";

$facebook = new Facebook(array('appId'  => '[YOUR_APP_ID]', 'secret' => '[YOUR_SEC_ID]'));  

$user_fb = $facebook->getUser();

if($user_fb == 0)
{
    $user_fb = $facebook->getUser();
}

if ($user_fb) // Check user's FB user ID has getting or not
{   
    $user_profile = $facebook->api('/me'); 

    $logoutUrl = $facebook->getLogoutUrl(); 

    echo $user_profile['email'];
    echo $user_profile['first_name'];
    echo $user_profile['last_name'];            
 }

else // user's FB user ID has not getting load login url with email permission
{     
     $perms = array('scope' => 'email');
     $loginUrl = $facebook->getLoginUrl($perms);        
     echo "<script> top.location.href='" . $loginUrl . "'</script>";        
}

Download Package

关于php - 如何通过 php 或 javascript 从 facebook 身份验证示例获取用户电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9511117/

相关文章:

javascript - 从 1.4.9 升级到 1.5.0 时,Angular 指令嵌套异常损坏

iOS 上的 Iphone5/ios6.1.3 和 Facebook SDK 3.2.1 - com.facebook.sdk 设备上出现错误 2

Facebook:如何访问响应中包含的数据?

php - 每次点击图像时 jCarousel 初始化/刷新/重新加载

php - 一个我无法弄清楚的错误,当使用 stdclass 时,将值显示为 *RECURSION*

javascript - FOSJsRouting 包返回错误 未找到“GET”的路由

javascript - 嵌入 Facebook 帖子的完整评论

php - 将数据从 jQuery 传递到 php 文件

php - 在不加载页面的情况下对图像执行 PHP 函数 onClick

javascript - jQuery 使用 on 方法将函数绑定(bind)到按钮