2010-04-30 21 views
5

當用戶第一次訪問我的網站,其中包含一個Facebook應用程序,它需要他允許它,並且他被允許這樣做,然後我得到我可以轉換爲access_token的代碼。到現在爲止還挺好。Facebook的access_token:一旦用戶接受我的應用程序,我怎麼得到它?

但是,一旦用戶已經訪問過該網站,我該如何獲取令牌? 只要這個令牌第一次形成活動一切都很好。但是,如果用戶在一週前已經允許該應用並且只能再次訪問我的頁面,我該如何獲得另一個令牌?

+0

您是否正在以任何特定語言尋找它? – Steve 2011-08-22 07:34:00

回答

0

我使用cookie方法在用戶計算機上存儲access_token。

FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true}); 

在你facebook.php文件,你需要cookieSupport設置爲true,那麼:

private $cookieSupport = true; 

或者使用這裏找到get_facebook_cookie功能:Single sign-on with the JavaScript SDK

的是的access_token然後存儲在cookie稱爲「fbs_APPID」(,其有效期至)。如果你想的cookie以持續多則幾個小時,你需要問的擴展權限「offline_access」:

使您的應用程序在任何時間執行代表用戶的授權請求。默認情況下,大多數訪問令牌在短時間後過期,以確保應用程序僅在主動使用應用程序時代表用戶發出請求。此權限使我們的OAuth端點返回的訪問令牌長久存在。

+0

因此,識別用戶的唯一方法是將令牌保存在cookie中? – hoktar 2010-04-30 12:10:21

+0

如果您檢查facebook.php中的getSession()函數,您會發現它們從$ _GET或$ _COOKIE構建會話。 – Jens 2010-04-30 16:55:06

-2

使用PHP

session_start(); 
// Create our Application instance. 
$facebook = new Facebook(array(
       'appId' => FACEBOOK_APP_ID, 
       'secret' => FACEBOOK_APP_SECRET, 
       'cookie' => true, 
       'domain' => 'example.com' 

)); 

$session = $facebook->getSession(); 

$me = null; 
// Session based API call. 
if ($session) { 
    try { 
     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 
     $_SESSION['me'] = $me; 
     $_SESSION['uid'] = $uid; 
     $_SESSION['session'] = $session; 

    } catch (FacebookApiException $e) { 
     error_log($e); 
    } 
} 

可通過$ _SESSION引用的access_token [ '會議'] [ 'ACCESS_TOKEN']你的應用程序中,,在fbdevtutorials.com

4
更孤單了教程

現在Facebook正在遷移到Oauth2,由Javascript創建的Cookie是不同的。我得到它爲我工作,並將其添加到FGraph插件的Rails叉 - https://github.com/imme5150/fgraph

其中一個技巧是,當您從cookie中存儲的「code」參數請求access_token時,您必須傳入「redirect_uri」,但你希望它是空白的。

3

在客戶端流程中,可以使用scope參數中的權限將用戶重定向到OAuth對話框。如果用戶已經接受了您的應用程序和權限,他將通過URI片段中的access_token重定向到您的「redirect_uri」,否則將提示所需的權限。

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream&response_type=token 

在服務器端的流量,你應該有「代碼」這樣你就可以兌換有關的OAuth端點上的access_token:

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URLclient_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE 

文檔:https://developers.facebook.com/docs/authentication/

相關問題