2012-04-12 94 views
2

我正在使用Facebook Javascript SDK http://developers.facebook.com/docs/reference/javascript/來驗證和批准我的Facebook應用程序。 我的SDK代碼如下:在JavaScript SDK中處理Facebook訪問令牌失效

window.fbAsyncInit = function() 
{ 
    FB.init({ 
     appId : 'MY_APP_ID', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true, // parse XFBML 
     oauth : true 
    }); 

    FB.login(function(response) 
    { 
     if (response.authResponse) 
     { 
      var userFBAccessToken = response.authResponse.accessToken; 
      console.log('userFBAccessToken: ' + userFBAccessToken); 
      FB.api('/me', function(response) 
      { 
       console.log('Good to see you, ' + response.name + '.'); 
       FB.logout(function(response) { 
        console.log('Logged out.'); 
       }); 
      }); 
     } else { 
      console.log('User cancelled login or did not fully authorize.'); 
     } 
    }, {scope: 'user_activities,user_notes,user_photos,user_videos,user_status,offline_access'}); 
}; 

// Load the SDK Asynchronously 
(function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
}()); 

我很困惑與offline_access棄用。我的問題是在這裏,如果我啓用「棄用離線訪問」選項,在我的應用程序高級設置頁面:

  1. 將是什麼這是我從response.authResponse.accessToken獲得訪問令牌的到期時間。無論是2小時還是60天? (現在和2012年5月1日之後的持續時間是多少)

  2. 如果只有2小時,我怎麼能延長到60天?

  3. 檢索到的訪問令牌只有在用戶處於在線狀態時纔有效,或即使在脫機狀態下也是有效的?

謝謝。

+0

任何人都可以請回答上述問題嗎?謝謝。 – Venkat 2012-04-13 11:19:26

+0

儘管有答案,但我仍對此有點困惑。看起來像javascript sdk需要你做服務器端,因爲它需要應用程序的祕密。當你這樣做並將它返回給客戶端後,你如何「堅持下去」(讓瀏覽器在下次調用FB.init時知道新的訪問權限)?另外,iOS sdk會自動擴展它。怎麼樣?任何時候您都不會將應用程序祕密提供給iOS SDK。 Facebook如何可靠地知道這是一個iOS設備? – 2012-05-02 19:28:19

回答

1

1 + 2。屆滿將是2個小時。您需要在到期後再擴展它。 https://developers.facebook.com/roadmap/offline-access-removal/

  1. 應該在任何時候都有效:延期的請求下,「客戶端OAuth和擴展ACCESS_TOKEN過期時間通過新的端點」在這裏解釋。
+0

謝謝。現在我清楚了。 – Venkat 2012-04-16 09:01:52

+0

擴展access_token的任何代碼示例?它可以用當前的Facebook PHP SDK完成嗎? – 2012-04-24 15:17:12

+3

在url中有一個擴展請求示例。通過PHP SDK獲取訪問令牌會自動授予訪問令牌兩個月。 – 2012-04-24 16:45:43