2012-03-19 165 views
4

我已经通过this post一遍又一遍地读,但它并没有道理给我。如何使用图形API获取Facebook用户的电子邮件地址?

我所试图做的是获取Facebook的用户的电子邮件地址,以便我可以将其存储在一个字符串和比较,看它是否现有用户的电子邮件匹配我的MySQL数据库。我只需要在用户首次授予应用访问权限时执行此操作。

在我的应用开发者界面的“Authenticated Referrals”部分,我设置了“用户&朋友权限”以包含“email”。

在我的网站的“画布”区域,我有这样的代码:

include('facebook/base_facebook.php'); 
include('facebook/facebook.php'); 
$facebook = new Facebook(array(
    'appId' => "XXXXXXXXXXXXXXX", 
    'secret' => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 
)); 
$user = $facebook->getUser(); 
if ($user) 
{ 
    try { 
     $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
     $user = null; 
    } 
} 

如果我var_dup()$的用户,我可以看到该用户ID(虽然不是什么其他东西),这似乎是正确的,所以我相信我连接到Facebook上的正确位置。

但随后出现了this suggested line of code,这意味着它返回一个电子邮件地址,但是当我赞同它,看看它是什么样子,它不返回的电子邮件地址:

echo "<br/>" . $facebook->getLoginUrl(array('req_perms' => 'email')); 

我种我认为它不会,因为它对我来说看起来不太合适,但另一方面,我不知道还有什么要处理它或在哪里放置它。

然后我也碰到this post,其代码在令我感到困惑,甚至进一步的方式HTML混合。

假设我的用户已获准用于我的应用程序,看看他们的电子邮件,是不是有它得到一个简单的方法?像我这样一个没有经验的程序员可以掌握的东西?

+2

你是如何实现Facebook登录?官方的PHP SDK和JavaScript SDK?现在它应该是范围不req_perms – arma 2012-03-19 09:55:34

回答

4

您正在使用过时的方法。您可以使用下面的代码来检索电子邮件。

您可以找到有关Facebook连接的更多信息:http://25labs.com/tutorial-integrate-facebook-connect-to-your-website-using-php-sdk-v-3-x-x-which-uses-graph-api/

$app_id  = "xxxxxxxxx"; 
$app_secret = "xxxxxxxxxx"; 
$site_url = "xxxxxxxxxxxxx"; 

include_once "src/facebook.php"; 

$facebook = new Facebook(array(
    'appId'  => $app_id, 
    'secret' => $app_secret, 
    )); 

$user = $facebook->getUser(); 

if($user){ 
    try{ 
     $user_profile = $facebook->api('/me'); 
    }catch(FacebookApiException $e){ 
     $user = NULL; 
    } 
} 

if($user){ 
    $logoutUrl = $facebook->getLogoutUrl(); 
}else{ 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope'   => 'email', 
     'redirect_uri' => $site_url, 
     )); 
} 

if($user){ 
    Echo "Email : " . $user_profile['email']; 
} 
4

正如评论中所建议的,您应该将req_perms替换为scope,因为它是指示哪个permissions将由用户授予的字段的名称。

一旦email权限被授予(您是否看到它在Auth对话框中被询问?),您将可以通过图形API获取email字段。您也可以通过指定“时间在fields参数检索结果只有必填字段:

$facebook->api('/me', array('fields' => 'id,email')); 

BTW,请不在于你是指这两个职位到老(2010年),在平台的方式改变了很多东西。请务必阅读关于PermissionsAuthentication的更新文档

+0

最后,我发现如何获取用户数据!谢谢! :) – 2015-09-26 13:17:10

0

您可以连接一个Facebook的用户名与电子邮件地址。例如,我的用户名是Facebook上的“umair.hamid.79”。这将是“[email protected]”。

相关问题