2013-03-24 95 views
0

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

<?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> 
+0

首先,不要写你的私密应用秘密的细节。它应该是秘密 – 2013-03-24 12:42:12

+0

thanx的编辑 – 2013-03-24 12:45:17

+0

我正在尝试与你的相同的代码,它工作正常。您是否使用最新的SDK导致您的登录URL也没有电子邮件的范围参数? – 2013-03-24 13:21:18

回答

0

那么通常我不使用PHP SDK来生成我登录网址,而不是我做手工,尝试改变这一行:

<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> 
+0

Thanx ..但仍然没有显示的信息.. :( – 2013-03-24 13:19:30

+0

但现在已经要求电子邮件,现在你必须使用作为get参数传递的代码,以http://beta.jokesnfunnypics.com /为用户添加和检索令牌 – 2013-03-24 13:24:17

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> 

请参阅这些教程。

Login with Facebook using PHP SDK

Login with facebook using PHP (Demo and Download)

0

正确的代码在PHP - 在1种形式3倍以下步骤: - 通过iZend说明 - Web引擎,包括在Facebook上的配置:http://www.izend.org/en/identification-by-facebook

  1. 使用SDK打开与Facebook的连接。
  2. 获取“与Facebook连接”按钮的URL。
  3. 检索连接用户的电子邮件地址(以及其他信息,例如注册表的名字和姓氏)。