2012-10-17 35 views
2

我希望我的网站上的用户能够使用他们现有的Facebook帐户登录。添加Facebook登录到自己的网站

我已经从developers.facebook.com下载了Facebook PHP SDK并为我的网站设置了一个应用程序。我刚刚使用了与SDK捆绑在一起的example.php文件,并将我的应用的'appID'和'secret'换成了数字。

注:在代码 'APPID' 和 '秘密' 要更换实际相当于


我这是我的头:

require 'src/facebook.php';(这肯定是被人发现)


这是主页上的代码,其中登录将是(也来自example.php):

<?php 
$facebook = new Facebook(array(
'appId' => 'appID', 
'secret' => 'secret', 
)); 

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

echo "<br />"; 
var_dump($user); 

if ($user) { 
try { 
    $user_profile = $facebook->api('/me'); 
} catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
} 
} 

if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

$naitik = $facebook->api('/naitik'); 
?> 

<?php var_dump($user); ?> 


<h1>php-sdk</h1> 

<?php if ($user): ?> 
<a href="<?php echo $logoutUrl; ?>">Logout</a> 
<?php else: ?> 
<?php echo "LoginURL:"; var_dump($loginUrl);?> 
<div> 
<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> 
<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']; ?> 

当我不登录到Facebook上,并点击链接,就带我到一个Facebook登录页面。登录后,它会通过url中的新变量(状态,代码等)重定向回主站点。一旦“登录”,var_dump($user)只是返回int(0)

任何人都可以指出我在正确的方向吗?我不知道为什么它不能分配用户。


倾销$facebook的结果:

object(Facebook)#182 (9) { 
["sharedSessionID:protected"]=> NULL 
["appId:protected"]=> string(15) "appID" 
["appSecret:protected"]=> string(32) "secret" 
["user:protected"]=> NULL ["signedRequest:protected"]=> NULL 
["state:protected"]=> NULL ["accessToken:protected"]=> NULL 
["fileUploadSupport:protected"]=> bool(false) 
["trustForwarded:protected"]=> bool(false) 
} 

回答

6

我认为这个链接可以帮助您的每一个问题,使用Facebook的PHP SDK http://25labs.com/tutorial-integrate-facebook-connect-to-your-website-using-php-sdk-v-3-x-x-which-uses-graph-api/

为WordPress插件

http://wordpress.org/extend/plugins/facebookall/通过sourceaddons

我也有试过这种

+0

感谢您的回复。当我从我的站点导航到fbaccess.php并且'var_dump($ user)'测试用户是否连接,但是当我在我的站点中包含fbaccess.php时var_dump($ user)''返回0.我想这个问题可能是由于我的网站是一个WordPress站点。 Wordpress使用某种类型的'mod_rewrite',它删除'/ index。PHP的URL,所以我的facebook应用程序的site_url不准确。我的情况是独特的,我主要使用wordpress发布功能,网站的其余部分是我自己的编码/数据库(我不使用后循环或页面布局)。 – iRector

+0

然后你可以使用Facebook或社交登录插件。尝试使用http://wordpress.org/extend/plugins/loginradius-for-wordpress/进行Facebook登录。 –

0

如果你不使用Facebook的连接,如张贴的用户或类似的东西。你可能想看看你可以从Facebook获得的register form iframe

0

它恰巧我和当我检查我的Apache日志我发现这个:

我通过PHP SDK(使用Curl)与Facebook通信时发现它存在SSL问题。您必须将CURL_OPTS“CURLOPT_SSL_VERIFYPEER”设置为“false”。

例:

的Facebook :: $ CURL_OPTS [CURLOPT_SSL_VERIFYPEER] = FALSE;