Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从我的应用程序中获取facebook用户ID?_Php_Facebook - Fatal编程技术网

Php 如何从我的应用程序中获取facebook用户ID?

Php 如何从我的应用程序中获取facebook用户ID?,php,facebook,Php,Facebook,我创建了一个facebook应用程序,并通过下面的代码向用户发送请求。现在,当用户允许我的应用程序时,我需要将他的id和电子邮件地址输入到我的画布url。但在下面的代码中,用户不进入我的画布url。因此,请帮助我解决,当用户允许我的应用程序并且我获得该用户的用户id时,他如何转到我的画布url?我的代码如下: 需要一次“facebook.php” $facebook=新的facebook(数组( “appId”=>, “秘密”=>, “cookie”=>true,) $req\u perms=“

我创建了一个facebook应用程序,并通过下面的代码向用户发送请求。现在,当用户允许我的应用程序时,我需要将他的id和电子邮件地址输入到我的画布url。但在下面的代码中,用户不进入我的画布url。因此,请帮助我解决,当用户允许我的应用程序并且我获得该用户的用户id时,他如何转到我的画布url?我的代码如下:

需要一次“facebook.php”
$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>

谢谢..这是可行的。但我用另一种简单的方法来解决..谢谢