2012-04-26 96 views
0

我试图用这个方法来发布照片到Facebook涂鸦墙。Facebook的图形API涂鸦墙

/// <param name="method">Http Method</param> 
/// <param name="url">Full url to the web resource</param> 
/// <param name="postData">Data to post in querystring format</param> 
/// <returns>The web server response.</returns> 

public string WebRequest(Method method, string url, string postData) 
{ 
    HttpWebRequest webRequest = null; 
    StreamWriter requestWriter = null; 
    string responseData = ""; 
    webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest; 
    webRequest.Method = method.ToString(); 
    webRequest.ServicePoint.Expect100Continue = false; 
    webRequest.UserAgent = "[]"; 
    webRequest.Timeout = 20000; 

    if (method == Method.POST) 
    { 
     webRequest.ContentType = "application/x-www-form-urlencoded"; 

     requestWriter = new StreamWriter(webRequest.GetRequestStream()); 
     try 
     { 
      requestWriter.Write(postData); 
     } 
     catch 
     { 
      throw; 
     } 
     finally 
     { 
      requestWriter.Close(); 
      requestWriter = null; 
     } 
    } 
    responseData = WebResponseGet(webRequest); 
    webRequest = null; 
    return responseData; 
} 

什么我遇到的问题是POSTDATA。我无法让它工作,我不确定那个字符串会是什么样子?任何人都可以举个例子吗?

+0

是否有错误?你的意思是“我无法让它工作?” – 2012-04-26 12:57:57

+0

什么都没有发布。它一次给墙上贴了一条消息,但就是这样。 – 2012-04-26 13:26:09

+0

你有没有有效的令牌?它可能会过期吗? – avs099 2012-04-30 12:05:42

回答

0

您需要发布到https://graph.facebook.com/me/feed?access_token=YOUR_ACCESS_TOKEN, 和发布数据应该看起来像

消息=这是一封测试邮件

(你应该在消息中转义特殊字符Uri.EscapeDataString,但不要逃避'=')

您还可以指定其他属性(如在documentation中定义的),例如:

消息= {逃脱这里消息} &链路= {了urlencoded这里链路} &字幕= {逃脱字幕这里文本} &标题= {逃脱标题这里文本} &描述= {逃脱的描述在这里文本} &图片= {url编码图片URL}

(当然没有大括号)。这将嵌入链接到您的文章,有一个标题,标题,描述和您所选择的缩略图。

我们看不到你的WebResponseGet的方法,但你应该检查一下responseData包含当过帐不会成功。或者,在WebResponseGet中查找HTTP状态代码和WebException。它有助于读取返回的数据; Facebook在一个JSON格式这样的()所返回的错误:

{ “错误”:{ “消息”: “缺少消息或 附件。”, “类型”: “FacebookApiException”, “代码”: 100,“error_subcode”:1349125}}

注意,发帖要求publish_actions同意您的应用程序(你需要将它添加到的范围要求的访问令牌时,如果它的作用域时不你请求了令牌,你需要一个新的令牌)。