Php 如何从我的应用程序中获取facebook用户ID?
我创建了一个facebook应用程序,并通过下面的代码向用户发送请求。现在,当用户允许我的应用程序时,我需要将他的id和电子邮件地址输入到我的画布url。但在下面的代码中,用户不进入我的画布url。因此,请帮助我解决,当用户允许我的应用程序并且我获得该用户的用户id时,他如何转到我的画布url?我的代码如下: 需要一次“facebook.php”Php 如何从我的应用程序中获取facebook用户ID?,php,facebook,Php,Facebook,我创建了一个facebook应用程序,并通过下面的代码向用户发送请求。现在,当用户允许我的应用程序时,我需要将他的id和电子邮件地址输入到我的画布url。但在下面的代码中,用户不进入我的画布url。因此,请帮助我解决,当用户允许我的应用程序并且我获得该用户的用户id时,他如何转到我的画布url?我的代码如下: 需要一次“facebook.php” $facebook=新的facebook(数组( “appId”=>, “秘密”=>, “cookie”=>true,) $req\u perms=“
$facebook=新的facebook(数组(
“appId”=>,
“秘密”=>,
“cookie”=>true,)
$req\u perms=“发布\u流、脱机\u访问、用户\u状态、电子邮件、读取\u流” $session=$facebook->getSession() $loginUrl=$facebook->getLoginUrl(数组('canvas'=>1,'fbconnect'=>0,'req\u perms'=>$req\u perms))
$me=null 如果(!$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;}
}
试试看{
$uid=$facebook->getUser();
$me=$facebook->api('/me');
}
捕获(FacebookApiException$e)
{echo“top.location.href=”$loginUrl';“exit;}
}
所以,请帮我获取用户id
提前谢谢
里亚德
当前用户的Facebook ID和电子邮件可通过以下方式访问:
$me['id'];
$me['email'];
这就是你想要的吗?我不熟悉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>
FB.init({
appId:
首先,你的代码写得“不好”。代码中的catch
块在执行时“并不意味着用户没有登录。这意味着你的try
块出现了问题(也就是一个糟糕的Facebook呼叫)
现在,对于您的问题,您只需将其放在try
块中:
$data = $facebook->api('/me?fields=id,email');
重要提示:你可以不收到用户的真实电子邮件,用户可以选择不与你共享,这样Facebook将创建一个“镜像”电子邮件与你的应用程序共享 最后,我解决了我的问题,现在我可以很容易地获得facebook用户id和电子邮件地址以及其他相关信息。使用此代码,我可以点击facebook进行特定用户的身份验证,当用户接受我的应用程序时,我可以将他/她的facebook用户id、电子邮件和其他信息输入$user\u info数组。希望这对您有所帮助。 请参见下面的代码:
<?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>
谢谢..这是可行的。但我用另一种简单的方法来解决..谢谢