我一遍又一遍地阅读this post,但这对我来说没有意义。
我想要做的是获取Facebook用户的电子邮件地址,以便我可以将其存储在字符串中并进行比较,以查看它是否与我的MySQL数据库中现有用户的电子邮件相匹配。我只需要在用户首次授予对应用程序的访问权限时执行此操作。
在我的应用开发人员界面的“经过身份验证的推荐”部分中,我已将“用户和朋友权限”设置为包含“电子邮件”。
在我网站的“画布”区域内,我有以下代码:
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()$ user,我可以看到用户ID(虽然不是很多)似乎是正确的,所以我相信我正在连接到Facebook上的正确位置。
但是后来有this suggested line of code,这意味着它会返回一个电子邮件地址,但是当我回复它以查看它的外观时,它不会返回一个电子邮件地址:
echo "<br/>" . $facebook->getLoginUrl(array('req_perms' => 'email'));
我觉得它不会,因为它对我来说看起来不太合适,但另一方面,我只是不知道还有什么用它或放在哪里。
然后我也遇到了this post,其代码与HTML混合在一起让我更加困惑。
假设我的用户已授予我的应用查看其电子邮件的权限,是不是有一种简单的方法来获取它?像我这样没有经验的程序员可以掌握的东西?
答案 0 :(得分:4)
根据评论中的建议,您应将req_perms
替换为scope
,因为它是字段的名称,表明用户授予哪个permissions
。
授予email
权限后(您是否在Auth对话框中看到它?)您将能够通过Graph API获得email
字段。您还可以通过在fields
参数中指定&em; em来仅检索结果中的必填字段:
$facebook->api('/me', array('fields' => 'id,email'));
顺便说一句,请注意,您提到的这两个帖子都是旧的(2010年),平台上的许多内容都发生了变化。请务必阅读Permissions和Authentication
上的最新文档答案 1 :(得分:4)
您使用的是过时的方法。您可以使用以下代码检索电子邮件。
找到有关Facebook Connect的更多信息$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'];
}
答案 2 :(得分:0)
您可以将Facebook用户名与电子邮件地址连接起来。例如,我的用户名是Facebook上的“umair.hamid.79”。它将是“umair.hamid.79@facebook.com”。