如何从我的应用程序获取Facebook用户ID?

时间:2011-04-25 16:19:00

标签: php facebook

我创建了一个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。

  

提前致谢

     

里亚德

4 个答案:

答案 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>
相关问题