1
  1. 据说,仅通过 API 发起新的对话是不可能的,除非使用 Facebook 自己的应用程序中集成的 Form。这是正确的,还是有一些新的 API 可以让我发起新的对话?

  2. 为了回复现有对话,我使用以下 FQL 查询“SELECT thread_id, . WHERE viewer_id={0} AND folder_id=0”检索了对话 ID。之后,我使用我的用户访问令牌检索了我的应用程序页面的 PageAccessToken,并尝试使用此调用:*您可以通过使用以下参数向 /CONVERSATION_ID/messages 发出 HTTP POST 来回复用户的消息 [conversation id, message] . 对话 ID 看起来像 t_id.216477638451347。* 我的 POST 调用看起来像这样(这不是有效的线程 ID):/t_id.2319203912/messages 填充了消息参数。但它总是说“未知方法”。你能帮我解决这个问题吗?是否缺少参数?我传入了页面的访问令牌来调用这个。

是否有一些我缺少的 API(Facebook 的聊天 API 除外)可以向用户发送私人消息?

编辑:

我想知道的是,下面的代码只返回一个页面,即应用程序的页面。这是正确的,还是需要另一个页面令牌?这是返回页面最让我烦恼的地方。

FacebookClient 使用我的 UserToken 来执行下一个任务。这是检索我的页面访问令牌的代码:

dynamic pageService =  FacebookContext.FacebookClient.GetTaskAsync("/"+UserId+"/accounts").Result;
dynamic pageResult = pageService.data[0];
_pageId = pageResult["id"].ToString();
return pageResult["access_token"].ToString();

现在检索我的 ConversationÍd 的代码:

dynamic parameters = new ExpandoObject();
parameters.q = string.Format("SELECT thread_id, folder_id, subject, recipients,     updated_time, parent_message_id, parent_thread_id, message_count, snippet, snippet_author,     object_id, unread, viewer_id FROM thread WHERE viewer_id={0} AND folder_id=0",     FacebookContext.UserId);
dynamic conversations =     FacebookContext.FacebookClient.GetTaskAsync("/fql",parameters).Result;

下面的代码是使用从上面的代码中检索到的访问令牌(页面访问令牌请求)执行的。现在用于发送回复的代码:

dynamic parameters = new ExpandoObject();
parameters.message = CurrentAnswer;
string taskString = "/t_id." + _conversationId + "/messages";
dynamic result =    FacebookContext.FacebookClient.PostTaskAsync(taskString,parameters).Result;
return true;

我还使用我的第一部分代码返回的令牌尝试了 facebook 的图形 API 调试器。但同样的错误信息。

4

0 回答 0