【问题标题】:(OAuthException - #190) Malformed access token exception(OAuthException - #190) 格式错误的访问令牌异常
【发布时间】:2016-07-15 23:12:02
【问题描述】:

我正在尝试使用我们在本地 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

【问题讨论】:

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


    【解决方案1】:

    您应该使用“代码”通过以下方式生成 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;
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2021-07-22
    • 2012-11-26
    • 2020-08-01
    • 2013-01-28
    相关资源
    最近更新 更多