您好我正在使用以下代码从Facebook使用C#SDK获取访问令牌
var fb = new FacebookClient();
dynamic result = fb.Get("oauth/access_token", new
{
client_id = "clientId",
client_secret = "clientSecret",
redirect_uri = "redirectUri",
code = "code"
});
return result.access_token;
上面的代码大部分时间都是完美的,但有时候会出现这个错误
(OAuthException - #100) Invalid verification code format.
如何解决这个问题?
答案 0 :(得分:4)
您的项目类型是什么: WinForms , WPF , ASP.NET ?
如果您使用 WinForms 或 WPF ,则必须通过请求OAuth登录对话框获取access_token
表格Browser Control
然后return_type=token
,然后从网址中提取有效的access_token
。
否则,如果您使用 ASP.NET 处理Web应用程序,则必须将用户重定向到OAuth对话登录页面,然后Facebook将使用URL上的代码重定向您,您从QueryString
获取此代码并向Facebook发送HTTPRequest
以获取有效access_token
。
你可以用我的方法来做到这一点:
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;
}
您可以从Page_Load
:
if (Request.QueryString["code"] != null)
{
code = Request.QueryString["code"].ToString();
string AT = GetAccessTokenFromCode(AppID, AppSecret, RedirectUrl, Code);
}
答案 1 :(得分:0)
您应该与询问redirect_uri
时的code
相同
此外,您在Facebook上的“Facebook登录网站”部分中配置的网站网址末尾必须有一个斜杠“/”。
这是一个完整的教程:Working with C# SDK
答案 2 :(得分:0)
This page让我想知道你的代码是否应该更像这样:
dynamic result = fbClient.Get("oauth/access_token", new
{
client_id = fbClient.AppId,
client_secret = fbClient.AppSecret,
grant_type = "fb_exchange_token",
fb_exchange_token = accessToken
});
也许你的accessToken超时还是什么?
答案 3 :(得分:-1)
var config = new Dictionary<string, object>();
//your application id and secret from https://developers.facebook.com/apps
config.Add("appId", "3955.......");
config.Add("secret", "4c1d...............");
config.Add("fileUpload", true); //optional
FacebookClient client = new FacebookClient(config);
ulong facebookId = client.getUser(); //retrieve user id. if user is not added the app this value is 0
client.getAccessToken()
为您提供访问令牌。