你好,我是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'];
文档在这里