2012-10-17 65 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;