2012-06-17 37 views
3

感謝您爲我的Facebook API處理工作減輕了工作負擔的優秀Facebook C#SDK。 我使用sdk來獲取儘可能多的數據,例如帖子,評論,用戶信息,但是我的程序會在我的訪問令牌在某段時間過後失效後停止,我必須重新啓動程序。訪問令牌從https://developers.facebook.com/tools/access_token/獲得,但我如何續訂令牌?在http://csharpsdk.org/docs/web/handling-expired-access-tokens是TOTO。任何人都可以請幫助解決這個問題?非常感謝你。如何使用其C#SDK續訂Facebook訪問令牌

+0

如果您使用的應用程序令牌來訪問數據,看看[這裏](HTTP:/ /stackoverflow.com/questions/10006708/getting-fb-page-data-from-facebook-using-c-sharp/10007058#10007058) –

回答

-3

我終於通過使用offline_access權限解決了這個問題,你可以先參考這個:http://operatorerror.org/2011/07/get-a-facebook-api-access-token-that-never-expires/ ,你會知道如何獲得永不過期的Facebook API訪問令牌。

接下來,您可參考此情況下,你碰上了offline_access許可不能進行檢查的問題:offline_access permission not present in Graph api explorer in facebook graph api

+2

__offline_access已被棄用,並將很快被刪除___;建立基於它的應用程序功能_now_不是一個好主意。 https://developers.facebook.com/roadmap/offline-access-removal/ – CBroe

+0

好評,謝謝@CBroe – Lenny

3

這裏是我用它來獲得更長的到期令牌

FacebookClient fbcl = new FacebookClient(atoken); 
fbcl.AccessToken = //your short access token; 
fbcl.AppId = //your app id; 
fbcl.AppSecret = // your app secret; 

//try to get longer token 
try 
{ 
    dynamic result= fbcl.Get("oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=" + atoken); 
    atoken = result.access_token; 
} 
catch 
{ 
    dynamic result= fbcl.Get("oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=" + atoken); 
    atoken = result.access_token; 
} 

有時這給出了一個錯誤,如「無法建立與FB的安全SSL連接」或者那樣。所以我再試一次。也許你可以解決這個問題,並幫助我太:) 乾杯

2

這個工作對我來說:

public static string RefreshAccessToken(string currentAccessToken) 
{ 
     FacebookClient fbClient = new FacebookClient(); 
     Dictionary<string, object> fbParams = new Dictionary<string, object>(); 
     fbParams["client_id"] = "your app id"; 
     fbParams["grant_type"] = "fb_exchange_token"; 
     fbParams["client_secret"] = "your client secret"; 
     fbParams["fb_exchange_token"] = currentAccessToken;    
     JsonObject publishedResponse = fbClient.Get("/oauth/access_token", fbParams) as JsonObject; 
     return publishedResponse["access_token"].ToString(); 
} 
相關問題