0

我对 facebook 登录一团糟。代码如下。您可以在http://beta.jokesnfunnypics.com/login查看输出。在范围内,我以电子邮件的形式提供,但是当我单击链接并重定向到 facebook 时,它说该应用程序只要求基本权限。此外,我已经将 redirect_uri 提到为http://beta.jokesnfunnypics.com/add,但我只被重定向到同一页面。再说一遍,在获得许可后,页面上也没有显示任何信息。请帮我。我准备给任何给我正确代码的人几美元。

<?php 
//Application Configurations
$app_id     = "XXXXXXXXXX";
$app_secret = "XXXXXXXXXXXXX";
$site_url   = "http://www.beta.jokesnfunnypics.com/add";

try{
        include_once "src/facebook.php";
}catch(Exception $e){
        error_log($e);
}
// Create our application instance
$facebook = new Facebook(array(
    'appId'     => $app_id,
'secret'    => $app_secret,
));

// Get User ID
$user = $facebook->getUser();


if($user){
try{
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
}catch(FacebookApiException $e){
    error_log($e);
    $user = NULL;
}

}

if($user){
    // Get logout URL
$logoutUrl = $facebook->getLogoutUrl();
}else{
// Get login URL
$loginUrl = $facebook->getLoginUrl(array(
    'scope'     => 'email',
    'redirect_uri'  => $site_url,
    ));
}


if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}


?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>php-sdk</title>
  </head>
  <body>
    <h1>php-sdk</h1>

    <?php if ($user): ?>

      <a href="<?php echo $logoutUrl; ?>">Logout</a>
    <?php else: ?>
      <div>
        Login using OAuth 2.0 handled by the PHP SDK:
        <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
      </div>
    <?php endif ?>

    <h3>PHP Session</h3>
    <pre><?php print_r($_SESSION); ?></pre>

    <?php if ($user): ?>
  <h3>You</h3>
$_SESSION['user']="abc;
  <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

  <h3>Your User Object (/me)</h3>
  <pre><?php print_r($user_profile); ?></pre>
<?php else: ?>
  <strong><em>You are not Connected.</em></strong>
<?php endif ?>

<h3>Public profile of Naitik</h3>
<img src="https://graph.facebook.com/naitik/picture">
<?php echo $naitik['name']; ?>
  </body>
</html>
4

3 回答 3

1

从代码来看,$loginUrl 变量被定义了 2 次,scope 和 redirect_uri 在第二次中丢失。尝试从您的代码中删除这些行

<?php 
$app_id     = "XXXXXXXXXX";
$app_secret = "XXXXXXXXXXXXX";
$site_url   = "http://www.beta.jokesnfunnypics.com/add";

try{
    include_once "src/facebook.php";
 }catch(Exception $e){
   error_log($e);
 }
// Create our application instance
$facebook = new Facebook(array(
'appId'     => $app_id,
'secret'    => $app_secret,
));

// Get User ID
$user = $facebook->getUser();

if($user){
try{
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
}catch(FacebookApiException $e){
error_log($e);
$user = NULL;
}

}

if($user){
// Get logout URL
$logoutUrl = $facebook->getLogoutUrl();
}else{
// Get login URL
$loginUrl = $facebook->getLoginUrl(array(
'scope'     => 'email',
'redirect_uri'  => $site_url,
));
}
?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
 <head>
<title>php-sdk</title>
 </head>
 <body>
<h1>php-sdk</h1>

<?php if ($user): ?>

  <a href="<?php echo $logoutUrl; ?>">Logout</a>
<?php else: ?>
  <div>
    Login using OAuth 2.0 handled by the PHP SDK:
    <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
  </div>
<?php endif ?>

<h3>PHP Session</h3>
 <pre><?php print_r($_SESSION); ?></pre>

 <?php if ($user): ?>
  <h3>You</h3>
 $_SESSION['user']="abc";
 <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">
 <h3>Your User Object (/me)</h3>
 <pre><?php print_r($user_profile); ?></pre>
 <?php else: ?>
 <strong><em>You are not Connected.</em></strong>
 <?php endif ?>

  <h3>Public profile of Naitik</h3>
  <img src="https://graph.facebook.com/naitik/picture">
  <?php echo $naitik['name']; ?>
  </body>
  </html>

请参阅这些教程。

使用 PHP SDK 登录 Facebook

使用 PHP 登录 facebook(演示和下载)

于 2013-05-28T07:29:20.097 回答
0

好吧,通常我不使用 php sdk 来生成我的登录 url,而是手动执行,尝试更改此行:

<a href="<?php echo $loginUrl; ?>">Login with Facebook</a>

对此:

<a href="https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=http://beta.jokesnfunnypics.com/add&scope=email">Login with Facebook</a>
于 2013-03-24T13:13:22.630 回答
0

PHP 中的正确代码 - 1 种形式的 3 步 - 由 iZend - Web 引擎解释,包括 Facebook 上的配置:http ://www.izend.org/en/identification-by-facebook 。

  1. 使用 SDK 打开与 Facebook 的连接。
  2. 获取 Connect with Facebook 按钮的 URL。
  3. 检索已连接用户的电子邮件地址(以及注册表单中的名字和姓氏等其他信息)。
于 2017-09-23T09:02:18.193 回答