Как создать ссылку для просмотра сообщения на facebook.com, если у меня есть идентификатор сообщения - PullRequest
0 голосов
/ 13 октября 2011

Я получаю входящие сообщения с помощью следующего вызова API api:

https://graph.facebook.com/me/inbox?access_token=...

Возвращает массив сообщений, каждое из которых имеет идентифицирующий идентификатор (такой же, как идентификатор сообщения, возвращаемый FQL)

Я бы хотел предоставить пользователю ссылку для просмотра сообщения непосредственно на Facebook.com.

Что-то вроде: https://www.facebook.com/messages/?action=read&tid=....

Это ссылка, по которой вы можете перейти, если просматриваете сообщение от самого Facebook.

Однако я не могу найти способ найти правильный текст в Graph API или FQL.

Мне также не повезло с поиском альтернативного URL.

Этот URL работал, но сейчас он мне не подходит: http://facebook.com/?sk=messages&tid=...

Это простоперенаправляет на страницу сообщений верхнего уровня: https://www.facebook.com/messages/

ЛЮБЫЕ ИДЕИ?

Большое спасибо

1 Ответ

0 голосов
/ 03 февраля 2012

Из API графа добраться до me/inbox набор результатов дает идентификатор как часть каждого возвращаемого объекта. Это также thread_id.

Если идентификатор, который у вас есть, является строковым объектом (возможно, guid), это из старой структуры хранения системы сообщений Facebook. Теперь они обновлены до новой структуры хранения, которая требует переноса старых в новую

Итак, у вас есть довольно простая проверка:

Если идентификатор потока длинный (Int64 / BigInt), то у вас есть новый поток и вы можете использовать http://www.facebook.com/messages/?action=read&tid=id.THREAD_ID

Если идентификатор потока является строкой, значит, у вас более старая тема и вы можете использовать

http://www.facebook.com/messages/?action=read&tid=THREAD_ID

Многие языки программирования имеют свою собственную форму проверки типа значения.

var threadId = (string)data.thread_id;
var longVal = 0L;    
var isLong = Int64.TryParse(threadId, out longVal);
var threadUrl = (isLong) ? 
  "http://www.facebook.com/messages/?action=read&tid=id." + threadId :
  "http://www.facebook.com/messages/?action=read&tid=" + threadId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...