2013-02-20 131 views
4

我的公司有一個企業Facebook帳戶,他們在不同的相冊中發佈活動照片。我的要求是從Facebook相冊中獲取所有照片並在我們的公司網站上展示。我能夠獲取照片,但用戶訪問令牌僅在60天內有效,這意味着每隔兩個月我將不得不登錄到公司的企業Facebook帳戶,重新生成令牌並更新我的應用程序中的令牌。Facebook - 如何獲得永久用戶訪問令牌

有沒有什麼辦法可以生成永久訪問令牌?或者在我的應用程序級別重新生成令牌(無需顯示登錄對話框)?

有沒有其他的方式來獲取照片,而無需創建應用程序?

我遵循以下步驟:https://www.facebook.com/dialog/oauth?client_id=%3CCLIENT_ID%3E&scope=manage_pages&redirect_uri=我從此API調用中獲得代碼。然後我得到的令牌如下:https://graph.facebook.com/oauth/access_token?client_id= & redirect_uri = & client_secret = & code =我使用Access令牌調試器驗證令牌。令牌有效期爲60天。要獲取頁面令牌,我使用了url:graph.facebook.com/me/accounts?access_token=我爲我的應用頁面獲得了令牌。我在工具驗證該令牌,它僅對60天

感謝

回答

3

我也想訪問數據,而無需創建一個應用程序。我嘗試了很多東西,但最後我不得不爲應用程序創建應用程序。所以你必須創建一個應用程序。另外,如果您看到開發者網站,則說他們在2012年12月刪除了「offline_access」權限。請參見此處:https://developers.facebook.com/roadmap/offline-access-removal/。所以,那是他們帶來了長期存取令牌。他們還說,我引用:「如果你想刷新一個仍然有效的長期訪問令牌,你必須首先獲得一個新的短命用戶access_token,然後調用下面的同一個端點。」

因此,您將不得不再次獲取短期訪問令牌,並使用短期令牌獲取長壽命令牌。要獲得長期的訪問令牌,您可以發送一個HTTP請求如下:

var short_access_token; //Get this 
var xhr = new XMLHttpRequest(); 
var f_url = "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=CLIENT_ID&client_secret=APP_CLIENT_SECRET&fb_exchange_token="+short_access_token; 

xhr.open("GET", f_url , true); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4) { 
     obj = xhr.responseText; 
     long_token = obj.split('=')[1].split('&')[0]; 
    } 
} 
xhr.send(); 

希望它可以幫助

+0

非常糟糕的主意,有像客戶端應用程序的祕密......你可能想要從服務器端做到這一點。 – mpowered 2016-10-24 17:08:03

+0

@mpowered +1。完全同意。我的純粹是客戶端演示應用程序,所以我沒有選擇。 – 2016-10-24 17:10:26

相關問題