2

您好我正在使用以下代码使用 C# SDK 从 facebook 获取访问令牌

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.

如何解决这个问题?

4

4 回答 4

4

您的项目类型是什么:WinFormsWPFASP.NET

如果您正在使用WinFormsWPF ,则必须通过请求 OAuth 登录对话框和获取access_token表单的URL ,然后从 URL 中提取有效的。Browser Controlreturn_type=tokenaccess_token

否则,如果您正在使用ASP.NET开发 Web 应用程序,则必须将用户重定向到 OAuth 对话框登录页面,然后 facebook 将使用 URL 上的代码将您重定向回来,您从 获取此代码QueryString并制作一个HTTPRequest到 Facebook 获取有效的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);
}
于 2013-02-20T15:28:37.273 回答
0

这个页面让我想知道你的代码是否应该更像这样:

   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 超时或什么?

于 2013-04-12T19:34:50.750 回答
0

你应该redirect_uri和你要求时一样code
此外,您在 Facebook 的“使用 Facebook 登录的网站”部分中配置的网站 URL 的末尾必须有一个尾随斜杠“/”。
这是一个完整的教程:使用 C# SDK

于 2013-02-20T11:00:23.657 回答
-1

http://www.nuget.org/packages/Facebook.CSharp.SDK/下载 sdk 后

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()

给你访问令牌。

于 2013-03-12T14:38:07.623 回答