我的旧facebook登录脚本暂时无法正常工作..
我可以获取每个用户的详细信息(姓名,位置,照片等),电子邮件地址除外..
大约2个月前工作正常;我不知道改变了什么?' ..
的index.php
<a onclick='facebookLogin();'>login</a>
<script>
function facebookLogin()
{
window.open('https://www.facebook.com/dialog/oauth?client_id=xxxxxxxx&display=popup&redirect_uri=http://www.example.com/facelogin.php&scope=email,user_location,user_birthday','facebook_popup','width=600,height=400');
}
</script>
facelogin.php
if((!empty($_GET['code']))) {
$code = $_GET['code'];
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=xxxxxxxx&redirect_uri=" . urlencode('http://www.example.com/facelogin.php')
. "&client_secret=XXXXXXXXXXXXXXXXXXXX&code=" . $code;
$ch=curl_init($token_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response=curl_exec($ch);
curl_close($ch);
$params = null;
parse_str($response, $params);
$user_profile = get_user_data($params['access_token']);
user_get_data函数:
function get_user_data($access_token = null)
{
$url = 'https://graph.facebook.com/me?access_token='.$access_token;
// Initialize session and set URL.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// Set so curl_exec returns the result instead of outputting it.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Get the response and close the channel.
$response = curl_exec($ch);
curl_close($ch);
return $user = json_decode($response);
}
在这里,例如我可以得到:$ user_profile-&gt; name
但我无法获得$ user_profile-&gt;电子邮件。
你知道为什么呀?答案 0 :(得分:0)
您必须专门请求访问用户电子邮件的权限
Facebook仅允许您在$user_profile
对象中访问您有权访问的用户。名称默认存在(对于没有姓名的用户,您无法做很多事情),并且您为应用程序获得了用户的唯一ID,但是您首次登录时要求获得特殊权限的电子邮件
查看Facebook PHP文档。