即使具有所需权限,也无法通过图形API检索用户电子邮件

时间:2012-03-19 07:48:36

标签: php facebook facebook-graph-api

您好我是Facebook应用程序开发的新手,并且正在使用我的第一个应用程序。

我的应用程序包括检索用户电子邮件的功能,ive所需的权限以及用户在身份验证时已经批准了这些权限但是当我尝试通过图形api检索用户电子邮件时却得不到任何回报但是其他信息如用户显示图片,名称等已成功检索。

在身份验证:

$dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . $redirect_uri . "&state=" . $_SESSION['state']."&scope=email,user_photos,publish_stream";

检索用户电子邮件:

$userEmail = json_decode(file_get_contents('http://graph.facebook.com/' . $userId)) -> email;
echo "email: ".$userEmail;

请帮助我。 三江源!

3 个答案:

答案 0 :(得分:1)

网址必须是https://而不是http://

还包括访问令牌。

file_get_contents("https://graph.facebook.com/" . $userId . "/?access_token=" . $accesstoken);

答案 1 :(得分:0)

您必须在请求中添加“访问令牌”才能“验证”您的请求调用。否则,仅返回公共数据。

在此处找到获取此令牌的步骤:http://developers.facebook.com/docs/authentication/

基本上,如果用户接受权限,Facebook会将他重定向到url $ redirect_uri并添加“code”参数。使用此代码,您可以检索我使用另一个Graph API调用提到的AccessToken。

答案 2 :(得分:0)

你真的需要使用facebook sdk,而不是自己把网址拼凑在一起:

之类的东西
$params = array(
  'scope' => 'email',
  'redirect_uri' => $redirect_uri
 );
 $dialog_url = $facebook->getLoginUrl($params);

会给你一个弹出对话框的链接。然后,在重定向的页面上,

$user_profile = $facebook->api('/me','GET');
echo $user_profile['email'];

文档为here