4

我知道已经有很多关于这个的问题——但我想在通过 Graph API 发布的 Facebook 墙上帖子中添加换行符。我已经看到各种建议使用的答案<center></center>,但这对我不起作用——它只是<center></center>在帖子中打印 ' '。

具体来说,我使用的是 Ruby 和 Koala gem。我正在尝试发布到用户页面。如果我作为链接发布并尝试在帖子描述中使用 center hack,它会按预期工作——但不是在我真正需要它的消息中。

更新:我已经向 Koala gem 提交了一个补丁,允许设置 :no_encoding 选项。如果/当此补丁被接受时,如果该选项设置为 true,它将允许换行。现在,有这个问题的人可以抓住我的宝石叉:https ://github.com/ideaoforder/koala

对于那些好奇的人来说,问题在于法拉第。请求方法设置为 :url_encode ,它将参数作为 url 编码的表单数据发送。参数必须作为常规数据发送,而不是表单数据(例如在 cURL 中使用 -d 标志而不是 -f 标志)。我们通过将数据作为查询字符串的一部分而不是编码参数发送来实现这一点。

4

2 回答 2

4

facebook 在帖子中实际接受的内容似乎不时发生变化,并且没有很好的记录。鉴于此,我可以通过发出以下请求在消息中创建带有换行符的墙帖:

POST https://graph.facebook.com/me/feed?access_token=<token>&message=line+1%0D%0Aline+2

在我的墙上创建以下帖子:

第 1
行 第 2 行

重要的部分是知道什么在哪里得到了 url 编码。message我的 API 请求中的参数包含%0D%0A,它相当于\r\n参见此处)的转义序列。如果您使用的 Koala gem 对您提供的输入进行 url 编码,那么您只需要传递带有\r\n转义码的字符串即可。

更新:尝试使用命令行程序手动发布帖子可能很有用。curl看看你是否可以使用这个命令让它工作:

curl 'https://graph.facebook.com/<wall id>?access_token=<access_token>' -d 'message=this+is+line+1%0D%0Athis+is+line+2'

像往常一样,用你自己的替换墙 ID 和访问令牌参数(让你的 Ruby 程序打印出access_token它从 Facebook 获得的)。您应该看到一个 JSON 字符串作为输出:

{"id":"wallid_postid"}

哪里wallidpostid是数字。如果您收到错误消息,则可能是 Facebook 或您的应用程序存在权限问题。

权限manage_pages:如果您作为该页面发布,您的应用必须获得该页面管理员的权限,并且在发出请求时用户当前必须登录到您的应用和 Facebook,除非您的应用也请求了该offline_access权限. 如果用户未登录,您将收到以下响应:

{"error": {
    "type":"GraphMethodException",
    "message":"Unsupported post request."
}}
于 2011-08-19T21:25:48.627 回答
2

我也为状态的换行而苦苦挣扎。我发现与其在状态中插入换行符而苦苦挣扎,如果使用这种方法也可以满足一个人的愿望,使用注释将提供很大的灵活性。Facebook 页面也可以拥有自己的笔记。只需将 ?sk=notes 添加到您的帐户或页面的 URL,您就会看到 Facebook 的 Notes 应用程序。

于 2012-10-30T12:24:06.607 回答