我正在使用Facebook C#SDK获取尽可能多的数据,例如帖子,评论,用户信息,尽可能从Facebook,但我的程序在我的访问令牌在一段时间后到期后停止,我必须重新启动该程序。我从the Facebook developer tools获得了访问令牌,但是如何续订令牌呢?它是http://csharpsdk.org/docs/web/handling-expired-access-tokens中的TOTO。
答案 0 :(得分: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连接。或者......那样的。所以我再次尝试抓住它。也许你可以解决这个问题并帮助我:) 干杯
答案 1 :(得分:3)
这对我有用:
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();
}
答案 2 :(得分:-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