首页 文章

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

提问于
浏览
2

我创建了一个facebook应用程序并通过下面的代码向用户发送请求 . 现在,当用户允许我的应用程序时,我需要他的id和电子邮件地址到我的画布url.But下面的代码用户不要去我的画布URL . 所以,请帮助我解决一下,当用户允许我的应用程序时,用户如何转到我的画布网址,并获得该用户的用户ID?我的代码如下:

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)); $ me = null; if(!$ session){echo“top.location.href ='$ loginUrl';”; exit;} else {try {
$ uid = $ facebook-> getUser();
$ me = $ facebook-> api('/ me');
}
catch(FacebookApiException $ e)
{echo“<script type ='text / javascript'> top.location.href ='$ loginUrl'; </ script>”;出口;}
}

所以,请帮助我获取用户ID .

提前感谢riad

4 回答

  • 1

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

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

    这就是你要追求的吗?

  • 2

    首先,您的代码是"badly" . 您的代码"when executed" does not 中的 catch 块表示用户未登录 . 这意味着您的 try 块中出现了问题(例如,糟糕的Facebook通话) .

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

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

    IMPORTANT NOTE:
    您可以 not 获取用户真实的电子邮件,用户可以选择不与您共享,这样Facebook将创建一个"mirror"电子邮件与您的应用程序共享 .

  • 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>
    
  • 1

    最后我解决了我的问题,现在我可以轻松获取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']."
    "; echo "Hi $user_name ! Your E-mail Address is: ".$user_info['email']."
    "; echo "Thanks for accepting our application."; //print_r($user_info); ?> </body> </html>

相关问题