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


Unable to retrieve user email through graph api even though have required permissions

你好,我是facebook应用程序开发的新手,正在开发我的第一个应用程序。

我的应用程序包括检索用户电子邮件的功能,我有所需的权限,用户在身份验证时已经批准了这些权限,但当我试图通过图形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;

请帮我做这件事。谢谢!

URL必须是http://的https://insead

还包括访问令牌。

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

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

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

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

你真的需要使用facebook-sdk,而不是自己把url拼凑在一起:类似的东西

$params = array(
  'scope' => 'email',
  'redirect_uri' => $redirect_uri
 );
 $dialog_url = $facebook->getLoginUrl($params);

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

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

文档在这里