【问题标题】:How get facebook user ID from my application?如何从我的应用程序中获取 Facebook 用户 ID?
【发布时间】:2011-04-25 16:19:00
【问题描述】:

我创建了一个 facebook 应用程序并通过下面的代码向用户发送请求。现在,当用户允许我的应用程序时,我需要将他的 id 和电子邮件地址放入我的画布 url。但是在下面的代码中,用户不要去我的画布 URL。所以,请帮我解决,当他允许我的应用程序并且我获取该用户的用户 ID 时,用户如何访问我的画布 URL?我的代码如下:

require_once 'facebook.php';
$facebook = 新 Facebook(数组(
'appId' => '#######',
'秘密' => '###################',
'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;

如果 (!$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。

提前致谢

里亚德

【问题讨论】:

    标签: php facebook


    【解决方案1】:

    可以通过以下方式访问当前用户的 Facebook ID 和电子邮件:

    $me['id'];
    $me['email'];
    

    这就是你所追求的吗?

    【讨论】:

      【解决方案2】:

      首先,您的代码写得“糟糕”。您的代码中的 catch 块“执行时”并不表示用户未登录。这意味着您的 try 块中出现了问题(也就是 Facebook 调用错误)。

      现在对于您的问题,您只需将其放在您的 try 块中:

      $data     =   $facebook->api('/me?fields=id,email');
      

      重要提示:
      您可能收到用户真实的电子邮件,用户可能选择不与您分享,这样 Facebook 将创建一个“镜像”电子邮件与您的应用分享。

      【讨论】:

        【解决方案3】:

        我不熟悉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>
        

        【讨论】:

        • 谢谢..它可行。但我用另一种简单的方法来解决它..thx
        【解决方案4】:

        最后我解决了我的问题,现在我可以轻松获取 facebook 用户 ID 和电子邮件地址以及其他相关信息。使用此代码我可以点击 facebook 进行特定用户的身份验证,当用户接受我的申请时,我可以得到他的/她的 facebook 用户 ID、电子邮件和其他信息到 $user_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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多