兑换令牌facebook-c#-sdk的代码

我正在使用Facebook-C#-Sdk v5.0.3在vb.net中创建一个非canvaswebforms应用程序,我无法更换access_token返回的facebook代码。 有没有人有我可以看的例子(C#或vb.net)?

非常感谢Stackoverflow社区!

试试这个:

var app = new FacebookClient(FacebookContext.Current.AppId, FacebookContext.Current.AppSecret); var accessToken = app.AccessToken 

或这个:

 var app = new FacebookClient(new Authorizer().Session.AccessToken); var accessToken = app.AccessToken 

您可以使用appId和appSecret作为app accesstoken。

例如,您可以在调试用户令牌时查看它是否有效

  var client = new FacebookClient(); dynamic result = client.Get("debug_token", new { input_token = user.AccessToken, access_token = string.Format("{0}|{1}", appId, appSecret) }); 

稍后您可以检查result.data.is_valid以查看用户令牌是否仍然有效。

如果您需要用户的access_token,首先需要正确设置范围,稍后您可以执行以下操作:

  if (Request["code"] == null) { Response.Redirect(string.Format( "https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}", appId, Request.Url.AbsoluteUri, scope)); } else { var tokens = new Dictionary(); string url = string.Format( "https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}", appId, Request.Url.AbsoluteUri, scope, Request["code"], appSecret); var request = WebRequest.Create(url) as HttpWebRequest; using (var response = request.GetResponse() as HttpWebResponse) { var reader = new StreamReader(response.GetResponseStream()); string vals = reader.ReadToEnd(); foreach (string token in vals.Split('&')) { tokens.Add(token.Substring(0, token.IndexOf("=")), token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf("=") - 1)); } } // Get access token from tokens var accessToken = tokens["access_token"]; } 

这会将用户重定向到Facebook,要求获得许可。 然后Facebook将使用查询字符串中的代码返回返回URL,使用该代码来检索用户的access_token。

请记住,这将是一个短暂的access_token,您可能需要扩展它。