向Facebook Messenger API提交POST请求

时间:2016-12-06 19:16:47

标签: facebook post https

我很难连接到Facebook Messenger API。服务器不断返回:

  

远程服务器返回错误:(400)错误请求。

我已经在这里呆了几天,尝试了多种方法,甚至尝试了一些不太有用的VS软件包。我已经多次检查了我的Auth Token,我不知道它可能是什么。

有什么明显的东西会导致错误的请求吗?我已经从Facebook的API页面复制了根URL。以下代码中的令牌已被删除。当我尝试读取响应时,应用程序抛出异常。 (WebResponse FBresponse = FBrequest.GetResponse();)

private string FBSendMessage(string user, string message)
{
    string result = null;
    string FBroot = "https://graph.facebook.com/v2.6/me/messages?access_token=";
    string token = "EAA...DZD";
    string FBURI = FBroot + token;

    string FBstring = "{ \"recipient\": { \"id\":\"" + user + "\" }, \"message\": { \"text\":\"" + message + "\" } }";

    try
    {

        //using (WebClient FBclient = new WebClient())
        //{
        //    result =
        //        FBclient.UploadString(FBURI, FBstring);
        //}

        HttpWebRequest FBrequest = (HttpWebRequest)WebRequest.Create(FBURI);

        FBrequest.Credentials = CredentialCache.DefaultCredentials;
        FBrequest.ProtocolVersion = HttpVersion.Version11;
        FBrequest.Method = "POST";
        FBrequest.ContentType = "application/json";

        byte[] FBbytes = Encoding.UTF8.GetBytes(FBstring);
        FBrequest.ContentLength = FBbytes.Length;

        Stream FBstream = FBrequest.GetRequestStream();

        FBstream.Write(FBbytes, 0, FBbytes.Length);

        FBstream.Close();

        WebResponse FBresponse = FBrequest.GetResponse();

        Output((((HttpWebResponse)FBresponse).StatusDescription), Log.Error);

        FBstream = FBresponse.GetResponseStream();

        StreamReader FBreader = new StreamReader(FBstream);

        result = FBreader.ReadToEnd();

        FBreader.Close();
        FBresponse.Close();
    }
    catch(Exception ex)
    {
        Output(ex.Message, Log.Error);
    }

    return result;

}

1 个答案:

答案 0 :(得分:0)

我已经确定我的代码不是问题所在。问题是我发出的用户ID无效的请求。 Facebook在应用程序上下文中创建的用户ID与您的默认用户ID不同。在发送消息之前,我必须收到一条消息,以了解该情境化的ID。