电子邮件不再通过Facebook oauth返回

时间:2013-08-12 22:17:15

标签: facebook facebook-oauth

我使用Oauth在我的网站上设置了Facebook注册/登录。它撤回的其中一条数据是电子邮件,我将其纳入了我对API的调用范围

http://www.facebook.com/dialog/oauth?client_id=[appID]&redirect_uri=[encoded_URL]&scope=email,user_likes,publish_stream

这会被重定向到包含以下代码的页面:

$code = $_GET['code'];

$tokenURL = "https://graph.facebook.com/oauth/access_token?client_id=[appID]&redirect_uri=[encoded_url]&client_secret=[secret_key]&code=" . $code;


// request access token
//use curl and not file_get_contents()
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $tokenURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$accessToken = curl_exec($ch);
curl_close($ch);

$graphURL = "https://graph.facebook.com/me?" . $accessToken;

// request user data using the access token
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $graphURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$tempUser = curl_exec($ch);
curl_close($ch);

//decode the json array to get user data
$user = json_decode($tempUser);

//store user data
$firstName = cleanWords($user->first_name);
$lastName = cleanWords($user->last_name);
$email = cleanEmail($user->email);

这曾经工作正常,但后来我突然发现电子邮件不再在JSON对象中返回,即使用户在第一次使用应用程序时允许提供电子邮件。是否对API进行了更改,以便现在需要区别对待电子邮件?我看到一条帖子说,如果用户未在其用户设置中明确许可与应用共享他们的电子邮件,那么它将不会被返回,但我在我的帐户中找不到任何此类设置。

有人可以请我指出那个设置的位置,以便我可以测试这是否是问题,或者让我知道电子邮件是否不再以相同的方式访问,以及我需要更改的内容? 谢谢,

更新:我通过完全重写代码以使用新的Facebook API来实现这一目标。

1 个答案:

答案 0 :(得分:0)

我已经确认这不是代码问题:我正在测试的特定Facebook帐户有一些不同之处。不知道还有什么,但由于这是一个Facebook使用问题,而不是代码问题,这可以被认为是回答。