Php 我的Facebook登录脚本已停止接收用户电子邮件
我的旧facebook登录脚本暂时无法正常工作 我可以获得每个用户的详细信息(姓名、位置、照片等),但电子邮件地址除外 大约两个月前,它工作正常;我不知道‘什么改变了?’ index.phpPhp 我的Facebook登录脚本已停止接收用户电子邮件,php,facebook,sdk,facebook-php-sdk,Php,Facebook,Sdk,Facebook Php Sdk,我的旧facebook登录脚本暂时无法正常工作 我可以获得每个用户的详细信息(姓名、位置、照片等),但电子邮件地址除外 大约两个月前,它工作正常;我不知道‘什么改变了?’ index.php <a onclick='facebookLogin();'>login</a> <script> function facebookLogin() { window.open('https://www.facebook.com/dialog/oauth?clien
<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>
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']);
用户获取数据功能:
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\u profile->name
但我无法获得$user\u profile->电子邮件。
你知道为什么吗?你必须明确请求访问用户电子邮件的权限 Facebook只允许您在
$user\u profile
对象中访问有关您有权访问的用户的内容。默认情况下,名称是存在的(你不能为没有名称的用户做很多事情),并且你可以为你的应用程序的用户获得一个唯一的ID,但是你必须在他们首次登录时请求特殊权限才能获得电子邮件
请查看Facebook PHP文档。我的脚本大约在一个月前询问权限。。一切都很好。。(?)他似乎在js请求中发布了电子邮件范围。在你的代码中,你也能得到他们的生日和位置吗?因为在js请求中,你似乎会在电子邮件中请求这些。是的。。我可以得到出生地、地点、照片等。。只有电子邮件返回为空:Si无法理解@Ciccio:(向我们展示您的
get\u user\u data
函数的功能。我在下面的问题中添加了@cbroe使用var\u dump($user\u profile)进行调试输出
,然后看看你得到了什么。你能描述一下,我应该在哪里添加这个吗?我应该说ECHO吗?在你将函数返回值赋给那个变量的那一行之后。不,不需要ECHO,var_dump本身生成输出。