アプリに統合された Facebook 独自のフォームを使用する場合を除き、API だけで新しい会話を開始することはできないと言われています。これは正しいですか、それとも新しい会話を開始できるようにする新しい API はありますか?
既存の会話に返信するために、次の FQL クエリ「SELECT thread_id, . WHERE viewer_id={0} AND folder_id=0」を使用して会話 ID を取得しました。その後、ユーザー アクセス トークンを使用してアプリ ページの PageAccessToken を取得し、この呼び出しを使用しようとしました。 . 会話 ID は t_id.216477638451347 のようになります。* 私の POST 呼び出しは次のようになりました (これは有効なスレッド ID ではありません): /t_id.2319203912/messages にメッセージ パラメータが入力されています。しかし、それは常に「未知の方法」と言いました。これを手伝ってくれませんか?パラメータが不足していませんか?これを呼び出すために、ページのアクセス トークンを渡しました。
ユーザーにプライベート メッセージを送信できる、私が行方不明になっている API (Facebook のチャット API を除く) はありますか?
編集:
私が疑問に思っているのは、以下のコードが 1 つのページ、つまりアプリケーションのページのみを返すことです。これは正しいですか、それとも別のページ トークンが必要ですか? これは、返されたページについて私を最も悩ませたものです.
FacebookClient は私の UserToken を使用して、次の次のタスクを実行します。これは、ページ アクセス トークンを取得するためのコードです。
dynamic pageService = FacebookContext.FacebookClient.GetTaskAsync("/"+UserId+"/accounts").Result;
dynamic pageResult = pageService.data[0];
_pageId = pageResult["id"].ToString();
return pageResult["access_token"].ToString();
会話を取得するコードは次のとおりです。
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 デバッガーでも試してみました。しかし、同じエラーメッセージが表示されます。