2010-08-29 80 views
2

我正在將Facebook和Twitter身份驗證集成到我的新網站。Facebook和Twitter連接:存儲用戶AccessToken

當用戶使用Facebook或Twitter進行身份驗證時,我得到AccessToken並將其存儲在數據庫中,並將其鏈接到登錄用戶的用戶ID(用戶應將他的Facebook或Twitter帳戶鏈接到他現有的或新的帳戶在我的網站)

現在接下來的時間,他驗證,我得到的accessToken,檢查數據庫,如果這的accessToken鏈接到任何用戶,如果是的話我直接登錄他進來。

現在在嘰嘰喳喳,我總是得到相同的accesstoken,但在facebook(稱爲SessionKey)中,它不是固定的,而是包含UserID。

問題是如何將用戶的臉書帳戶鏈接到我的網站上的帳戶?我應該使用他的Facebook ID並將其鏈接到我的網站UserID?

謝謝。

回答

2

您應該使用Facebook用戶標識。它對每個用戶都是獨一無二的,永不改變。推特一樣的東西。如果您需要訪問twitter api,則可以保留訪問令牌,但請使用twitter用戶標識鏈接到您網站的帳戶。即使訪問令牌具有offline_access權限,訪問令牌也可以更改,但可以由用戶撤銷。

0

您必須在授權過程中請求offline_access擴展權限。

例如:

https://graph.facebook.com/oauth/authorize?client_id=<CLIENT ID>&redirect_uri=<YOUR CALL BACK URL>&scope=user_photos,user_videos,publish_stream,read_stream,offline_access 

http://developers.facebook.com/docs/authentication/#exchange_session

一旦用戶授權您的應用程序,你會得到用戶的非到期然後的access_token可以儲存和再利用。

假設你正在使用PHP,使用php-sdk和access_token進行API調用看起來像這樣;

$uid = $myDB_StoredUserID; 
$access_token = $myDB_StoredToken; 
$facebook->api($uid.'/feed', 'get', array('access_token' => $access_token));