我在登录按钮上设置了范围,它要求获得电子邮件许可,但无法获取电子邮件信息。我正在测试它,所以我有一个主电子邮件,它已被批准。
我这样做了,但它没有解决我的问题: Facebook Email field return null (even if the “email” permission is set and accepted)
这是我的代码:
define('YOUR_APP_ID', 'x');
define('YOUR_APP_SECRET', 'x');
include_once 'facebook/facebook.php';
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
$userId = $facebook->getUser();
<script>
window.fbAsyncInit = function() {
FB.init({
appId : <?=YOUR_APP_ID?>,
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
FB.Event.subscribe('auth.login', function(response) {
loading(1);
<?
if ($userId) {
$userInfo = $facebook->api('/' + $userId + '?locale=en_US&fields=id,name,email');
}
?>
var mail = "<?=$userInfo['email']?>";
$.post("<?=$sozlukscripti["path"]?>inc/reglogin.php", { islem: "fbgiris", mail: mail }, function(data) {
if(data) {
location.reload();
}
else {
$.pnotify({title: 'giriş başarısız', text: '<? _e("k. adı & mail ya da şifre yanlış"); ?>', type: 'error'});
}
loading();
});
return false;
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
reglogin.php
为我的会员设置会话。如果我将var mail设置为我的电子邮件(user@example.com
),则代码有效。我无法收到facebook connect的电子邮件。
我的按钮代码:
<div id="fb-root"></div>
<fb:login-button scope="email"></fb:login-button>
谢谢你的到来。
答案 0 :(得分:0)
感谢您的帮助(!)
我是一名网页设计师。所以我想我在javascript代码中犯了一个大错误。
var mail = "<?=$userInfo['email']?>";
将javascript代码更改为:
<?
if ($userId) {
$userInfo = $facebook->api('/' + $userId + '?locale=en_US&fields=id,name,email');
$_SESSION['email'] = $userInfo['email'];
}
?>
var mail = "<?=$_SESSION['email']?>";
现在可以了。但有人可以解释为什么它第一次不起作用吗?
noob here