Stackoverflow使用不同的方式登錄他們的網站,例如與Facebook登錄。如何添加Facebook登錄到我自己的網站?
隨着Facebook的社交插件(見social plugins),你可以添加一個像按鈕或Facebook登錄。但如何通過使用stackoverflow來管理facebook賬戶與一個計算器賬戶?
Stackoverflow使用不同的方式登錄他們的網站,例如與Facebook登錄。如何添加Facebook登錄到我自己的網站?
隨着Facebook的社交插件(見social plugins),你可以添加一個像按鈕或Facebook登錄。但如何通過使用stackoverflow來管理facebook賬戶與一個計算器賬戶?
Facebook登錄插件只提供一種方式讓您登錄用戶到您的網站。你必須自己鏈接到你的內部系統(就像StackOverflow一樣)。這意味着根據Facebook用戶的詳細信息創建一個新的「用戶」。
舉例來說,如果你的網站使用的電子郵件地址作爲「用戶名」,那麼你必須問的Facebook用戶提供他們的電子郵件地址或索要電子郵件地址的權限。然後,爲該用戶創建一個新帳戶併爲其提供一個隨機密碼。
您還必須更改登錄流程,以便現有用戶可以使用其電子郵件/密碼或其關聯的Facebook帳戶登錄。
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註銷按鈕,當用戶登錄時會不會渲染。
遵循應用註冊和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>';
}
例如有註冊你的鏈接頁面上的插件那裏。當然,有自己實現的方法 - 只需要用戶連接到您的應用程序,獲取您需要的信息,並使用您的頁面登錄系統創建一個新帳戶。 – CBroe 2012-08-07 08:35:21