步驟一
首先請先確認你於Facebook是處於登出狀態, 接下來當你連結到範例網站之後, Facebook JavaScript Client Libraries中的FB.Facebook.apiClient.requireLogin方法會檢查目前的URL中是否有session這一個參數, 假如沒有的話, 你就會被強制的重導向到Facebook的登入頁, 並在URL後方附加上許多相關的GET變數, 包含你的API Key以及Callback URL等等資訊.
http://www.facebook.com/login.php?api_key={應用程式的API Key}&extern=0&fbconnect=1&next={應用程式的Callback URL}&return_session=1&v=1.0&locale=en_US
步驟二
如果return_session設定為1, 當登入成功之後, 頁面會重導向回Callback Page URL, 而瀏覽器路徑會顯示如下, 在Callback URL後會附上許多GET參數
http://www.6yeah.com/fb_apps/js_demo/?session={%22session_key%22%3A%223.drvv_pxbWgtdgo1dqmbL9g__.86400.1256907600-638368594%22%2C%22uid%22%3A%22638368594%22%2C%22expires%22%3A1256907600%2C%22secret%22%3A%22BnOyOpZJ8E9VWhhJUKUn9Q__%22%2C%22sig%22%3A%225a1856eac374f80cd115f41b8c5db5b8%22}
如果於登入頁中我們手動的將return_session設為0, 當登入成功之後, 頁面同樣的會重導向回Callback Page URL, 但是瀏覽器路徑列中多了一個auth_token的參數
此時依舊會執行到FB.Facebook.apiClient.requireLogin並發現URL(document.URL)中有一個session參數
步驟三
回傳的session資訊會被寫入Cookie之中, 也就是說就算把Callback URL後面的參數都刪除掉再重新連線一次(ex:http://www.6yeah.com/fb_apps/js_demo/)你依舊會被FB.Facebook.apiClient.requireLogin判定為已登入的狀態.
小結
- 在Iframe App的模式下, 使用者身分驗證完成後進行重導向的URL是透過埋在前端頁面Javascript裡的API Key去Facebook的資料庫中去擷取出來的, 也就是說目前開發者並無法於前端指定重導向反回的URL. 然而在使用Facebook Connect的模式下, Callback URL會被設定成當前的頁面.
- 一個session只適用於某特定的使用者與應用程式的配對而且只能被用來擷取,操作與更新符合該配對的使用者資料
No comments:
Post a Comment