我的Facebook登录脚本被停止获取用户电子邮件

时间:2015-07-06 19:51:02

标签: php facebook sdk facebook-php-sdk

我的旧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;电子邮件。

你知道为什么呀?

1 个答案:

答案 0 :(得分:0)

您必须专门请求访问用户电子邮件的权限

Facebook仅允许您在$user_profile对象中访问您有权访问的用户。名称默认存在(对于没有姓名的用户,您无法做很多事情),并且您为应用程序获得了用户的唯一ID,但是您首次登录时要求获得特殊权限的电子邮件

查看Facebook PHP文档。