0

我使用 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 来完成这项工作。

4

1 回答 1

0

我已经验证这不是代码问题:我正在测试的特定 Facebook 帐户只是有些不同。还不确定是什么,但由于这是一个 Facebook 使用问题而不是代码问题,因此可以考虑回答。

于 2013-08-13T15:51:22.510 回答