我想每隔几分钟获得一个新的访问令牌,以便在我的walla上自动发布一次。这是一个好方法吗?我得到空异常。例外情况如下:var request = HttpContext.Current.Request;
private string PostFacebookWall(string accessToken, string message)
{
string code = "";
var responsePost = "";
try
{
//create the facebook account object
var objFacebookClient = new FacebookClient(accessToken);
var parameters = new Dictionary<string, object>();
parameters["message"] = message;
responsePost = objFacebookClient.Post("feed", parameters).ToString();
}
catch (Exception ex)
{
var request = HttpContext.Current.Request;
if (request.QueryString["code"] != null)
{
code = request.QueryString["code"].ToString();
GetAccessTokenFromCode("", "", "https://developers.facebook.com/tools/explorer/?method=GET&path=535075181%3Ffields%3Did%2Cname",code);
}
responsePost = "Facebook Posting Error Message: " + ex.Message;
}
return responsePost;
}
public string GetAccessTokenFromCode(string AppID, string AppSecret, string RedirectURL, string Code)
{
WebClient wc = new WebClient();
string u2 = "https://graph.facebook.com/oauth/access_token?client_id=" + AppID + "&redirect_uri=" + RedirectURL + "&client_secret=" + AppSecret + "&code=" + Code + "&state=anytexthere";
string access = wc.DownloadString(u2);
access = access.Substring(access.IndexOf("access_token") + 13);
if (access.Contains("&"))
{
string accesstoken = access.Substring(0, access.IndexOf("&"));
return accesstoken;
}
return access;
}
我在这一行上得到空:
var request = HttpContext.Current.Request;
编辑**
这是原始异常消息:(OAuthException - #190) 验证访问令牌时出错:会话已于 2014 年 12 月 09:00 过期。当前时间是 13 פברואר 2014 00:52。
这是完整的原始异常消息:
Facebook.FacebookOAuthException was caught
HResult=-2146233088
Message=(OAuthException - #190) Error validating access token: Session has expired on 12 פברואר 2014 09:00. The current time is 13 פברואר 2014 00:52.
Source=Facebook
ErrorCode=190
ErrorSubcode=463
ErrorType=OAuthException
StackTrace:
at Facebook.FacebookClient.ProcessResponse(HttpHelper httpHelper, String responseString, Type resultType, Boolean containsEtag, IList`1 batchEtags)
at Facebook.FacebookClient.Api(HttpMethod httpMethod, String path, Object parameters, Type resultType)
at Facebook.FacebookClient.Post(String path, Object parameters)
at ScrollLabelTest.Form1.PostFacebookWall(String accessToken, String message) in e:scrolllabelScrollLabelScrollLabelForm1.cs:line 268
InnerException:
所以我尝试每次过期时自动更新访问令牌。
您无法在
Winform中HttpContext
。寻找其他获取code
的方法