2012-06-17 5 views
3

Спасибо за отличный Facebook C# SDK, который облегчает мою работу, связанную с Facebook API. Я использую sdk для извлечения большого количества данных, например. сообщений, комментариев, информации о пользователе, из Facebook, насколько это возможно, но моя программа останавливается после истечения срока действия моего токена доступа после определенного периода времени, и мне нужно перезапустить программу. Маркер доступа получен от https://developers.facebook.com/tools/access_token/, но как я могу обновить токен? Это TOTO в http://csharpsdk.org/docs/web/handling-expired-access-tokens. Может ли кто-нибудь помочь в решении этой проблемы? Большое спасибо.Как обновить токен доступа Facebook, используя его C# SDK

+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/ , вы узнаете, как получить токен доступа к API Facebook, который никогда не истекает.

Далее, вы можете обратиться к этому в случае, если вы столкнулись с проблемой, что разрешение offline_access не может быть проверено: offline_access permission not present in Graph api explorer in facebook graph api

+2

__offline_access устарел и скоро будет удален; основанные на нем функциональные возможности для создания приложений - это не совсем хорошая идея. 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; 
} 

Иногда это выдает ошибку, например: «Не удалось установить безопасное SSL-соединение с FB» или так. Поэтому я снова пытаюсь это сделать. Может быть, вы можете решить эту проблему и помочь мне тоже :) Приветствия

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(); 
} 
Смежные вопросы