2012-08-07 57 views
11

Stackoverflow使用不同的方式登錄他們的網站,例如與Facebook登錄。如何添加Facebook登錄到我自己的網站?

隨着Facebook的社交插件(見social plugins),你可以添加一個像按鈕或Facebook登錄。但如何通過使用stackoverflow來管理facebook賬戶與一個計算器賬戶?

+0

例如有註冊你的鏈接頁面上的插件那裏。當然,有自己實現的方法 - 只需要用戶連接到您的應用程序,獲取您需要的信息,並使用您的頁面登錄系統創建一個新帳戶。 – CBroe 2012-08-07 08:35:21

回答

4

Facebook登錄插件只提供一種方式讓您登錄用戶到您的網站。你必須自己鏈接到你的內部系統(就像StackOverflow一樣)。這意味着根據Facebook用戶的詳細信息創建一個新的「用戶」。

舉例來說,如果你的網站使用的電子郵件地址作爲「用戶名」,那麼你必須問的Facebook用戶提供他們的電子郵件地址或索要電子郵件地址的權限。然後,爲該用戶創建一個新帳戶併爲其提供一個隨機密碼。

您還必須更改登錄流程,以便現有用戶可以使用其電子郵件/密碼或其關聯的Facebook帳戶登錄。

7

Facebook社交插件: 登錄按鈕 Facebook提供了他們稱之爲社交插件的東道主。我們感興趣的是登錄按鈕。以下是將按鈕放到網頁上的基本步驟:

您需要爲您的網站安裝Facebook應用程序。轉到https://developers.facebook.com/apps/,然後單擊「創建新應用程序」按鈕。

你的「應用顯示名稱」可以是有意義的。 我通常會使用該網站的域名。您也可以在未來將其用於其他目的。 「應用程序名稱空間」需要是不包含任何特殊字符的內容。 我通常使用我的應用程序顯示名稱,不含空格,句點等。 現在您需要輸入您的「應用程序域」和網站「網站URL」。爲應用程序域輸入您的網站託管的域名。 對於網站URL輸入您網站的完整URL。 例如,如果您的域名是name.com,那麼您的網站網址應該類似http://www.name.com。 保存您的更改,只要您輸入了正確的信息。 現在你將有一個頁面顯示你的「App ID」和「App Secret」。 只需將該頁面打開即可,因爲在將登錄按鈕代碼添加到頁面時,您將需要您的應用程序ID。 現在我們需要從Facebook獲取登錄按鈕代碼。轉到http://developers.facebook.com/docs/reference/plugins/login/並單擊「獲取代碼」按鈕。 複製第一個框中的HTML5代碼,現在將它放在網頁正文標籤下方。代碼應該是這個樣子:

<div id="fb-root"></div> 
<script> 
    (function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) { 
     return; 
    } 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=APP_ID"; 
    fjs.parentNode.insertBefore(js, fjs); 
    } (document, 'script', 'facebook-jssdk')); 
</script> 

在代碼中一定要與你的Facebook應用程序創建的應用程序ID替換APP_ID。 現在將第二個框中的代碼粘貼到您希望登錄按鈕所在的任何地方。該代碼應該是這個樣子:

<div class="fb-login-button" data-show-faces="false" data-width="200" data-max-rows="1"></div> 

我改變了數據顯示,面孔屬性設置爲false,因爲它設置爲true註銷按鈕,當用戶登錄時會不會渲染。

0

遵循應用註冊和FB SDK下載此代碼後:

<?php 
 
require_once('lib/Facebook/FacebookSession.php'); 
 
require_once('lib/Facebook/FacebookRequest.php'); 
 
require_once('lib/Facebook/FacebookResponse.php'); 
 
require_once('lib/Facebook/FacebookSDKException.php'); 
 
require_once('lib/Facebook/FacebookRequestException.php'); 
 
require_once('lib/Facebook/FacebookRedirectLoginHelper.php'); 
 
require_once('lib/Facebook/FacebookAuthorizationException.php'); 
 
require_once('lib/Facebook/GraphObject.php'); 
 
require_once('lib/Facebook/GraphUser.php'); 
 
require_once('lib/Facebook/GraphSessionInfo.php'); 
 
require_once('lib/Facebook/Entities/AccessToken.php'); 
 
require_once('lib/Facebook/HttpClients/FacebookCurl.php'); 
 
require_once('lib/Facebook/HttpClients/FacebookHttpable.php'); 
 
require_once('lib/Facebook/HttpClients/FacebookCurlHttpclient.php'); 
 

 

 
use Facebook\FacebookSession; 
 
use Facebook\FacebookRedirectLoginHelper; 
 
use Facebook\FacebookRequest; 
 
use Facebook\FacebookResponse; 
 
use Facebook\FacebookSDKException; 
 
use Facebook\FacebookRequestException; 
 
use Facebook\FacebookAuthorizationException; 
 
use Facebook\GraphObject; 
 
use Facebook\GraphUser; 
 
use Facebook\GraphSessionInfo; 
 

 
use Facebook\FacebookHttpable; 
 
use Facebook\FacebookCurlHttpClient; 
 
use Facebook\FacebookCurl; 
 

 

 

 
session_start(); 
 
$app_id=""; 
 
$app_secret=""; 
 
$redirect_url=""; 
 
FacebookSession::setDefaultApplication($app_id,$app_secret); 
 
$helper=new FacebookRedirectLoginHelper($redirect_url); 
 
$sess=$helper->getSessionFromRedirect(); 
 
if(isset($sess)){ 
 
\t $request=new FacebookRequest($sess,'GET','/me'); 
 
\t $response=$request->execute(); 
 
\t $graph=$response->getGraphObject(GraphUser::classname()); 
 
\t $name=$graph->getName(); 
 
\t echo 'hi $name'; 
 
\t 
 
} 
 
else 
 
{ 
 
\t echo '<a href="'.$helper->getLoginUrl().'">Login with Facebook</a>'; 
 
}

相關問題