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

最佳答案

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

关于c# - (OAuthException-#190)格式错误的访问 token 异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38267246/

10-10 23:57