2012-04-06 46 views
1

那麼有似乎對這個話題比較嚴重的混亂過期的訪問令牌,我掙扎着爬了明確的答案,所以這裏是我的問題...刷新使用服務器端的流量自動

我現在用的是我之前使用offline_access這是現在正在折舊,所以我需要一種刷新令牌的方式在以下情況:

1)用戶更改FB密碼 2)令牌自然到期

我的應用程序發佈結果給用戶FB牆壁,所以刷新需要是d一個自動我們的服務器(無cookie或OAuth的對話框)

我想我可以嘗試使用新的端點這裏

http://developers.facebook.com/roadmap/offline-access-removal/

描述,用下面的一段代碼(JAVA):

public static String refreshFBAccessToken(String existingAccessToken) 
     throws Exception{ 
    //Currently not working 
    String refreshUrl = "https://graph.facebook.com/oauth/access_token? 
     client_id="+FacebookApp.appId+" 
     &client_secret="+FacebookApp.appSecret+" 
     &grant_type=fb_exchange_token 
     &fb_exchange_token="+existingAccessToken; 
    URL url = new URL(refreshUrl); 
    URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), 
      url.getQuery(), null); 
    String result = readURL(uri.toURL()); 
    String[] resultSplited = result.split("&"); 
    return resultSplited[0].split("=")[1]; 
} 

但這似乎沒有工作(我得到迴應400),當我重讀看來這個端點用於僅使用客戶端的流量獲得令牌的文檔...

那麼服務器端的流量怎麼樣....?

有人可以告訴我,如果上述方法是正確的或有另一種方式?

非常感謝

回答

3

從我所瞭解的沒有刷新令牌的服務器端流量。

刷新令牌調用需要包括用戶認證過程的響應,這是一個短暫的令牌。

您需要將刷新標記進程作爲用戶登錄流程的一部分包含進來,否則,如果這不適用於您的設置,則需要通過電子郵件向用戶發送請求,以便他們回來!

+0

好的,謝謝,那不是我想聽的,但很高興知道!我想我會發送一封自動發送的電子郵件,要求他們點擊刷新令牌的鏈接 – DaveB 2012-04-16 12:32:26

1

我不知道Java,但語法是非常像C#,所以我可以說,你正在做的一切權利。

但我懷疑這個函數readURL做什麼?

如果它的工作方式與php的get_file_contents()一樣(即,如果它執行了HTTP獲取),我想那不是一個正確的方法。

根據我在谷歌的刷新標記方法的經驗,我認爲你應該做一個HTTP POST而不是HTTP GET給定的URL。

+0

謝謝我會研究這一點,雖然根據下面的迴應判斷它不會奏效! – DaveB 2012-04-16 12:33:07

相關問題