繁体   English   中英

Facebook使用PHP SDK登录无法正常工作

[英]Facebook Login using PHP SDK not working

<?php
  require_once('facebook.php');
  $config = array(
    'appId' => 'xxxxx',
    'secret' => 'xxxxx',
  );

  $facebook = new Facebook($config);
  $user_id = $facebook->getUser();
?>
<html>
  <head></head>
  <body>

  <?php
    if($user_id) {
      try {

        $user_profile = $facebook->api('/me','GET');
        echo "Name: " . $user_profile['name'];

      } catch(FacebookApiException $e) {
        $login_url = $facebook->getLoginUrl(); 
        echo 'Please <a href="' . $login_url . '">login.</a>';
        echo "1";
        error_log($e->getType());
        error_log($e->getMessage());
      }   
    } else {
      $login_url = $facebook->getLoginUrl();
      echo 'Please <a href="' . $login_url . '">login.</a>';
     echo "2";
    }
  ?>

  </body>
</html>

当我转到mysite.com/fbconect.php时,它是一个带有LOGIN链接的白页。 当我点击登录时,它将进入Facebook页面登录。 登录后,我回到mysite.com/fbconect.php然后再显示,登录链接再次回复“1”。 mysite.com的URL成为mysite.com/fbconect.php?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。 我的代码有什么问题?

你的代码没有错。

确定:

  1. 用于测试的facebook用户已授权该应用程序
  2. 此代码只是运行到部署在两者中指定的网站上的PHP页面:
    • Facebook Developers网站 - > App > YourApp > Basic - > App Domains
    • Facebook Developers网站 - > App > YourApp > Basic - > Website with Facebook Login

在此输入图像描述

也许您已经使用尚未接受您的fb应用的用户登录。 在这种情况下,您将看到“ 请登录1

如果您看到“ 请登录2 ”, 确保您的代码已被捕获且异常。 例如,如果你读这个:

OAuthException
Error validating access token: User YYYYYYYY has not authorized application XXXXXXXXXXXXXXXX.

您的fb用户很可能已从他/她的列表中删除了您的应用。 或者,如果你看到

Couldn't connect to host 

这意味着您正在处理的系统最有可能阻止传出连接。

如果你想要一个已经接受你的fb应用程序的测试用户,你可以从Facebook Developers网站创建一个进入“ Apps > YourApp > Developer Roles

如果您想获得用户的授权,您可以更改您的代码:

<?php
  require_once('facebook.php');
  $config = array(
    'appId' => 'xxxxx',
    'secret' => 'yyyyyy',
  );

  $facebook = new Facebook($config);
  $user_id = $facebook->getUser();
?>
<html>
  <head></head>
  <body>

  <?php
      function render_login($facebook) {
          $canvas_page = 'http://www.yoursite.com/';
          // HERE YOU ASK THE USER TO ACCEPT YOUR APP AND SPECIFY THE PERMISSIONS NEEDED BY
          $login_url = $facebook->getLoginUrl(array('scope'=>'email,user_photos,friends_photos', 'redirect_uri'=>$canvas_page));
          echo 'Please <a href="' . $login_url . '">login.</a>';
      }

    if($user_id) {
      try {

        $user_profile = $facebook->api('/me','GET');
        echo "Name: " . $user_profile['name'];

      } catch(FacebookApiException $e) {
        render_login($facebook);
        echo "1";
        error_log($e->getType());
        error_log($e->getMessage());
      }
    } else {
       render_login($facebook);
       echo "2";
    }
  ?>

  </body>
</html>

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM