我创建了一个facebook应用程序并通过下面的代码向用户发送请求。现在当用户允许我的应用程序然后我需要他的id和电子邮件地址到我的画布url.But上面的代码用户不要去我的canvas URL。所以,请帮我解决一下,当用户允许我的应用程序时,用户如何转到我的画布网址,并获得该用户的用户ID?我的代码如下:
require_once'facebook.php';
$ facebook = new Facebook(阵列(
'appId'=> '#######',
'secret'=> '###################',
'cookie'=>是的,));
$ req_perms =“publish_stream,offline_access,user_status,email,read_stream”;$ session = $ facebook-> getSession();
$ loginUrl = $ facebook-> getLoginUrl(array('canvas'=> 1,'fbconnect'=> 0,'req_perms'=> $ req_perms));
$ me = null;if(!$ session) {echo“top.location.href ='$ loginUrl';”; exit;}
否则{
try { $uid = $facebook->getUser(); $me = $facebook->api('/me'); } catch (FacebookApiException $e) { echo "<script type='text/javascript'>top.location.href= '$loginUrl';</script>"; exit;} }
所以,请帮助我获取用户ID。
提前致谢
里亚德
答案 0 :(得分:3)
Facebook ID&amp;可以通过以下方式访问当前用户的电子邮件:
$me['id'];
$me['email'];
这就是你要追求的吗?
答案 1 :(得分:2)
首先,您的代码“写得很糟糕”。代码中的catch
阻止“执行时” 意味着用户未登录。这意味着您的try
阻止了一些问题(又名Facebook呼叫)。
现在针对您的问题,您只需将其放在try
块中:
$data = $facebook->api('/me?fields=id,email');
重要提示:
您可以不获取用户真实的电子邮件,用户可以选择不与您分享,这样Facebook就会创建一个“镜像”电子邮件与您的应用分享。
答案 2 :(得分:1)
我不熟悉php评论上面的代码。但是一般情况下,最好单独使用javascript sdk进行登录(在asp.net中遇到同样的问题)。这样,在用户登录后,控件将返回到启动它的同一页面。例如:
<div id="fb-root"></div>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
FB.init({
appId: <app_id>, cookie: true, status: true, xfbml: true
});
function fblogin() {
FB.login(function (response) {
//Control comes back here
if (response.session) {
alert(response.session.access_token);
var url = '/me?fields=name,email';
FB.api(url, function (response) {
//You are now in the same page with the data you wanted. If necessary redirect.
alert(response.name);
alert(response.email);
});
}
else {
alert("User did not login successfully");
}
}, { perms: 'email' });
}
</script>
<a href="#" onclick="fblogin(); return false;"><img src="../Images/social_facebook.png" /></a>
答案 3 :(得分:1)
最后我解决了我的问题,现在我可以轻松获取facebook用户ID和电子邮件地址以及其他相关信息。使用此代码我可以点击Facebook进行特定用户的身份验证,当用户接受我的应用程序时,我可以得到他的/她的facebook用户ID,电子邮件和其他信息到$ user_info array.Hope它会帮助你。
请看下面的代码:
<?php
require_once 'facebook.php';
$facebook = new Facebook(array(
'appId' => '########',
'secret' => '##########################',
'cookie' => true,
));
$req_perms = "publish_stream,offline_access,user_status,email,read_stream";
$session = $facebook->getSession();
$loginUrl = $facebook->getLoginUrl(array('canvas'=> 1,'fbconnect' => 0,'req_perms' => $req_perms));
$user_info = null;
if (!$session)
{ echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";exit;}
else{
try { $user_info = $facebook->api('/me'); }
catch (FacebookApiException $e)
{ echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; exit;}
}
?>
<!doctype html>
<html>
<head>
</head>
<body>
<?php
$user_name=$user_info['name'];
echo "Hi $user_name ! Your Facebook ID is: ".$user_info['id']."<br/>";
echo "Hi $user_name ! Your E-mail Address is: ".$user_info['email']."<br/>";
echo "Thanks for accepting our application.";
//print_r($user_info);
?>
</body>
</html>