我正在尝试在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接受的。
鲁瓦扬
答案 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验证它......