2013-09-04 29 views
5

Potrzebuję zapisać link do pliku załączonego do wiadomości bezpośredniej (dla strony, pobranej z "/conversations"). Jak mogę to zrobić?Bezpośrednia wiadomość API Graph dla strony: jak pobrać odnośnik do załączonego pliku

Wiem, jak uzyskać łącze do obrazu. Obiekt JSON dla obrazu ("attachments") zawiera znacznik "image_data", który zawiera znaczniki "url" i "preview_url" w celu uzyskania dostępu do obrazu.

Na załączonych plików (w moim przypadku na przykład PDF), tylko FB wysyła "id", "mime_type", "name" i "size", ale nie dodatkowe dane. Przykład:

"id": "m_id.158623824339344" 
.... 
"attachments": { 
    "data": [ 
    { 
     "id": "7b84fd4c0f18fb4060ae0fe0dcfeb42e", 
     "mime_type": "application/pdf", 
     "name": "Attachment1.pdf", 
     "size": 80798 
     } 
    ] 
} 

Ale kiedy zalogować się FB jako użytkownik i kliknij załącznik w przeglądarce, otrzymuję ten link:

https://www.facebook.com/ajax/messaging/attachment.php?attach_id=<attach_id>&mid=id.<mid>&pageid=<pageid>&ext=<ext>&hash=AQCafpYeZj2pSjRk 

metodą prób i błędów okazało się, że możliwe jest uzyskaj dostęp do pliku bez części "hash" i "ext". Oznacza to, że teoretycznie jestem w stanie wygenerować ten link w mojej aplikacji ("attach_id" i "mid" są dostarczane wraz z wiadomością i znam mój identyfikator strony).

Ale wydaje się to bardzo niewiarygodne. Ten link może się zmienić w każdej chwili, łamiąc moją aplikację.

Szukałem dużo, ale nie mogłem znaleźć żadnej dokumentacji na ten temat. Czy ktokolwiek zna lepsze rozwiązanie? Lub czy ktoś może wskazać mi dokumentację dotyczącą tego problemu?

Wielkie dzięki!

Barbara

+0

Zrobiłem dokładnie to samo. Wygląda na to, że Facebook zwraca pustą stronę podczas próby uzyskania dostępu do załącznika, gdy nie jest zalogowany. Tak więc jest to przynajmniej jeden przypadek użycia, w którym to się nie powiedzie. – dirkbonhomme

Odpowiedz