0

我正在实现我的 fb 应用程序,它已连接到它自己的 fb 粉丝专页。我需要获取用户名、ID 等用户信息,但是当我点击“Facebook 身份验证”链接时,我最终会转到一个空白页面?你可以在这里查看我的代码:http: //codepad.org/f0Tuh63v

 error_reporting(E_ALL);
 ini_set('display_errors', true);

 require 'facebook/facebook.php';

   $facebook = new Facebook(array(
 'appId'  => '1',
 'secret' => '2',
));


// See if there is a user from a cookie
 $user = $facebook->getUser();

if ($user) {
  try {
   // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
   print_r($user_profile);
   } catch (FacebookApiException $e) {
   echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
   $user = null;
 }
}
else{
$loginUrl = $facebook->getLoginUrl(
        array('scope' => 'user_about_me,user_birthday,email,publish_actions,offline_access,user_hometown,user_location',
              'redirect_uri' => "https://domain.net/intro.php"
        )
); // end of array

}
?>
 <!DOCTYPE html>
  <html xmlns:fb="http://www.facebook.com/2008/fbml">
  <body>
    <?php if ($user) { ?>
      Your user profile is
     <pre>
        <?php print htmlspecialchars(print_r($user_profile, true)) ?>
     </pre>
   <?php } else { ?>

  <a href="<?php echo $loginUrl; ?>">Facebook authenticate</a>
    <?php } ?>
   <div id="fb-root"></div>
   <script>
     window.fbAsyncInit = function() {
       FB.init({
        appId: '<?php echo $facebook->getAppID() ?>',
        cookie: true,
        xfbml: true,
        oauth: true,
      status: true
    });
    FB.Event.subscribe('auth.login', function(response) {
      //window.location.reload();
    });
    FB.Event.subscribe('auth.logout', function(response) {
      //window.location.reload();
    });
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
   </body>
  </html>

它也在这里http://codepad.org/f0Tuh63v 我做错了什么?

还有一种方法可以在不使用 phpsdk 或 js sdk 的情况下获取 FB 用户 ID?还是我必须使用这些插件?

4

1 回答 1

0

我看不出你的代码有什么问题。但是,如果您使用的是 Javascript,我可以告诉您另一种方法来获得身份验证,然后获取您需要的信息。

我在按钮后面使用了以下代码,它验证了我的 Facebook 应用程序,然后将用户重定向到我的网站。它对我有用。

<a class="fb-login-button" align="center" target="_blank" href="https://www.facebook.com/dialog/oauth?client_id=CLIENT_ID&response_type=token&scope=PERMISSION_1,PERMISSION_2&redirect_uri=YOUR_WEBSITE"> TEXT </a>

然后我提取了在重定向 URL 中返回的令牌。

var url_t; // Get the redirected URL.
access_token = url_t.split('=')[1].split('&')[0];

然后使用访问令牌发送 HTTP 请求以获取所需数据。我使用了 facebook 提供的 GRAPH API。例如:获取用户的名字:

var xhr = new XMLHttpRequest(); 
var f_url_new = "https://graph.facebook.com/fql?q=SELECT%20name%20FROM%20user%20WHERE%20uid%20=%20me()&access_token=" + access_token;
xhr.open("GET", f_url_new , true);
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        obj1 = JSON.parse(xhr.responseText);
        var str = obj1.data[0].name.toString();
        var n=str.split(" ");
        document.getElementById("name").innerText = n[0];
    }
}
xhr.send();

希望它能给你一些关于替代方案的想法。这不是您问题的正确答案,但可以在思考过程中提供帮助。

于 2013-02-21T00:30:38.600 回答