facebook c#sdk:使用描述中的换行添加/编辑事件

时间:2011-03-24 15:50:56

标签: facebook-c#-sdk

我正在尝试在Facebook页面上编辑活动。 SDK工作正常,但我有一个问题。

每当描述中有换行符(\ r \ n)时,它们就会发布到Facebook。 所以我得到了像以下那样的事件主体:

  

新活动!\ r \ n欢迎参加活动。

而不是

  

新活动!
  欢迎参加活动。

查看图表的结果到达事件,我看到换行符是双重转义的,看起来像这样:

  

...
  “名称”:“测试事件”,
  “描述”:“新事件!\\ r \\ n欢迎参加活动。”,
  “start_time”:“2011-03-24T00:00:00”
  ...

我已经尝试过任何我能想到的可能的解决方案,但无济于事。 我已经沦为用“*”代替换行符,只是为了分隔句子......

文本以对象中的字符串形式出现,并传输到JsonObject。

JsonObject owner = new JsonObject { .... };
JsonObject evt = new JsonObject();
evt.Add("id", eventId);
evt.Add("owner", owner);
evt.Add("name", eventItem.Name);
evt.Add("updated_time", eventItem.Updated.ToString("o"));
evt.Add("description", eventItem.Description);
evt.Add("start_time", eventItem.StartDate.ToString("o"));
evt.Add("end_time", eventItem.EndDate.ToString("o"));
...
var fbc = new FacebookClient(internalObject.AccessToken);
result = (bool) fbc.Post(evt);

任何想法?

编辑:

解决方法。 我对FacebookUtils.ToJsonQueryString进行了更改。 这有效,但我想这可能是SDK中的一个错误?

看起来Facebook在事件中不支持标准Json转义新行吗?

internal static string ToJsonQueryString(IDictionary<string, object> dictionary)
{
   ...

   jsonValue = jsonValue.Replace("\\n", "\n").Replace("\\r", "\r");

   if (!String.IsNullOrEmpty(jsonValue))
   {
      var encodedValue = UrlEncode(jsonValue);
      sb.AppendFormat(CultureInfo.InvariantCulture, "{0}={1}", key, encodedValue);

   ...
   return sb.ToString();
}

此更改使返回的查询字符串中的\ r \ n看起来像%0d%0a而不是%5cr%5cn,这是facebook接受的。

鲁瓦扬

3 个答案:

答案 0 :(得分:1)

自版本SDK 5.0.8起修复 - 25. march

答案 1 :(得分:0)

这有效:

使用此: <center></center>

而不是br或换行符等。你只能连续做一个(即你不能增加间距)。

答案 2 :(得分:-1)

你有什么理由不使用:

{
    "name": "TEST EVENT",
    "description": "New event!<br/>Welcome to the event.",
    "start_time": "2011-03-24T00:00:00"
} 

jsonlint验证它......