2012-05-06 40 views

回答

102

有一種方法可以將其延長至60天。這裏描述:https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/Scenario 4: Client-side OAuth and Extending Access_Token Expiration Time through New Endpoint

編輯: 爲了延長你需要用你的短暫訪問令牌下面的請求的訪問令牌:

https://graph.facebook.com/oauth/access_token?    
    client_id=APP_ID& 
    client_secret=APP_SECRET& 
    grant_type=fb_exchange_token& 
    fb_exchange_token=EXISTING_ACCESS_TOKEN 
+1

當我目前的訪問令牌在60天后每次展開時,是否需要交換當前的access_token以獲取新的訪問令牌?現在,當我通過offline_access scop參數似乎是它不考慮它,只是我的訪問令牌是在幾個小時內展開。你能解釋我如何通過facebook JavaScript sdk獲得長期訪問令牌嗎?是否有任何需要發送的設置或特殊參數? –

+0

脫機訪問已被棄用,所以不要嘗試使用它。我編輯了我的答案。 –

+0

謝謝Yan,這樣我們可以將我們存在的用戶access_token更新爲新的萬能access_token。沒事兒。但我仍然不知道如何通過facebook js sdk獲得60個到期時間的新access_token。他們的任何特殊範圍參數或配置與此相關。 –

12

由於Facebook的一個bug,一些用戶必須在Facebook發佈長壽命令牌之前未授權應用程序。

+11

確認。經過7個小時將我的頭撞到屏幕上,從我的帳戶中刪除了該應用程序,並且返回了長壽命令牌。 – Costa

+4

這是一個笑話是不是... – seb

+2

這個錯誤仍然沒有解決? – Enrique

0

爲javascript添加以下功能的功能:我希望它適用於您。

function getLongLiveToken(data){ 

     FB.api('oauth/access_token', { 
      client_id: data.client_id, // FB_APP_ID 
      client_secret: data.secret, // FB_APP_SECRET 
      grant_type: 'fb_exchange_token', 
      fb_exchange_token: data.access_token // USER_TOKEN 
     }, function (res) { 
      if(!res || res.error) { 
       console.log(!res ? 'error occurred' : res.error); 
      }else{ 
       var accessToken = res.access_token; 
       if(typeof accessToken != 'undefined'){ 
       } 
      } 
     }); 
    } 
+0

不要從客戶端進行調用,將短令牌發送到服務器,並在後端使用這種類型的內容,因爲它包含應用程序密鑰。 – meain

+0

你能告訴!!!你最喜歡哪種編程語言。 – ankur

+1

使用你在後端使用的任何東西,我個人使用python。 – meain