Как получить URL цепочки сообщений, зная идентификатор ветки? - PullRequest
5 голосов
/ 29 января 2012

Существует Как создать ссылку для просмотра сообщения на facebook.com, если у меня есть вопрос с идентификатором сообщения , но без ответа.Что если я получил идентификатор потока, используя конечную точку API / me / inbox API, и мне нужно перенаправить пользователя на сам Facebook, показывающий эту тему?Как мне создать URL.Кажется, есть URL-адреса, такие как http://www.facebook.com/messages/?action=read&tid=id.143666952390138, где идентификатор потока - это номер в конце.Но есть также некоторые незнакомые URL, такие как http://www.facebook.com/messages/?action=read&tid=27726d81656e4c07ae5654116cccb724, где предыдущее правило не работает.Есть ли какое-либо решение для получения URL потока с помощью Graph API или FQL?

1 Ответ

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

Если ваш идентификатор является строковым объектом (возможно, 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;
...