(OAuthException - #190)格式错误的访问令牌异常

时间:2016-07-08 12:54:48

标签: c# asp.net facebook facebook-graph-api

我正在尝试使用我们在本地WiFi网络上的门户(该网站永久运行在本地网络上),在Facebook上检查客户到我们的咖啡馆。我正在使用以下使用Facebook C#SDK的代码:

if (Request.QueryString["code"] != null && Request.QueryString["code"] != "")
{
    string AccessToken = Request["code"].ToString();
    var fb = new FacebookClient(AccessToken);
    dynamic parameters = new ExpandoObject();
    parameters.message = "This is just a test.";
    parameters.place = "<MY PAGE ID>";
    dynamic result = fb.Post("me/feed", parameters);
    var id = result.id;
}
else
{
    var redirectUri = "http://<LOCAL SERVER IP ADDRESS>:<LOCAL SERVER PORT NUMBER>/FBLogin.aspx";

    var service = new FacebookClient();
    var loginUrl = service.GetLoginUrl(new
    {
        client_id = appID,
        client_secret = appSecret,
        redirect_uri = redirectUri,
        response_type = "code",
        scope = "publish_actions" // Add other permissions as needed
    });

    Response.Redirect(loginUrl.ToString());

    var fb = new FacebookClient();
    dynamic result = fb.Post("oauth/access_token", new
    {
        client_id = appID,
        client_secret = appSecret,
        redirect_uri = redirectUri
        //code = Request.QueryString["code"].ToString()
    });
}

我尝试了this question和其他人的所有内容,但我忘了链接,没有任何效果。

更新

我可以使用Facebook调试工具直接生成访问令牌来登记。

完全例外:

  

(OAuthException - #190)格式错误的访问令牌   AQBQAhmVl6xEYtUmSUzBCdcMq8Djzi-XgEkkFLVwUgT_v592CkhBxOiJ7xX6-PoUpvk2XRqZZ9TahXw8u7_R1qletojvnMR5ENlVTON5tzOg-6b6Mw2foGRyXUEnzNzYhc1p7bb48E9nV5NuB1tg0cFsSM2WSeSTYXnjyyuuuyxEjeqfXy1Kn0PTnIaH1s_2wuKuUCq2AdD-PyHkbj_zUADDnwZCeJk5KSHkqbcKTLgYaIk6roMWJb8xHsExJK86xbRt5jXvS2-bBLwi5dYHn_Fpc7NZjilRvNYWa2gyKSo8ElABnF3Qr051VJInVoNsXiOYTQK24tWvEqvOY_ZeKoId

1 个答案:

答案 0 :(得分:2)

你应该使用'code'来生成AccessToken:

client_id=<YOUR_APP_ID>&redirect_uri=<YOUR_URL>&
client_secret=<YOUR_APP_SECRET>&code=<YOUR_CODE>

作为回应,您可以获得AccessToken。

您可以使用此代码获取accessToken:

public String GetAccessToken(string code)
{
    //create the constructor with post type and few data
    MyWebRequest myRequest = new MyWebRequest("https://graph.facebook.com/oauth/access_token", "GET", "client_id=" + this.ApplicationID + "&client_secret=" + this.ApplicationSecret + "&code=" + code + "&redirect_uri=http:%2F%2Flocalhost:5176%2F");

    string accessToken = myRequest.GetResponse().Split('&')[0];
    accessToken = accessToken.Split('=')[1];

    return accessToken;
}