2012-03-19 96 views
-2

我试图组合这两个SDK。为了做到这一点,我创建了这个代码:Facebook Connect - JavaScript和PHP SDK

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
     <title>New JavaScript SDK & OAuth 2.0 based FBConnect Tutorial | Thinkdiff.net</title> 
     <!-- 
      @author: Mahmud Ahsan (http://mahmud.thinkdiff.net) 
     --> 
    </head> 
    <body> 
     <div id="fb-root"></div> 
     <script type="text/javascript"> 
      var button; 
      var userInfo; 

      window.fbAsyncInit = function() { 
       FB.init({ appId: 'xxxxxxxxxx', //change the appId to your appId 
        status: true, 
        cookie: true, 
        xfbml: true, 
        oauth: true}); 
       showLoader(true); 

     </script> 

     <body> 
      <?php 
       $cookie = preg_replace("/^\"|\"$/i", "", $_COOKIE['fbs_' . "203222769784206"]); 
       parse_str($cookie, $data); 

       $fb = new Facebook(array(
        'appId' => "xxxx", 
        'secret' => "xxxxxx" 
       )); 
       $fb->setAccessToken($data['access_token']); 
       var_dump($fb->getUser()); 
      ?> 
    </body> 
</html> 

但是,它打印int(0)。可能是什么问题?它错在哪里?访问令牌有问题吗?

回答

0

此代码不起作用。这里是问题 - PHP代码在服务器端运行,JS/HTML代码在浏览器上运行。您正在运行一个PHP服务器端代码,这取决于只有在页面加载并运行后才会发生的事情。它可能能够工作在下一个浏览量,因为可能会设置cookie。

另外,在用户授权应用程序之前,可能不会设置access_token事物。你检查过吗?

也就是说,这是获取用户数据的一种非常糟糕的方式。解析由FB设置的cookie不是FB支持的方式,可能会违反API的条款和条件。

您必须使用标准JS-SDK FB.Login()来登录用户并获取access_token并将其发送到服务器并在服务器端获取数据。