2015-04-29 15 views
13

Chcę opublikować moje zdjęcia na mojej stronie na Facebooku. Poniżej znajduje się kod, który wypróbowałem, który pochodzi ze strony podręcznika RestFB. Ale pokazuje jakiś błąd, który nie jest zrozumiany. Również w opublikować ("ja/zdjęcia") powinienem przekazać mój nazwa użytkownika zamiast pisać mi?. Również obraz bird.jpg istnieje w moim folderze projektu. Czy ktoś może mi pomóc? Wszelkiego rodzaju pomoc będzie mile widzianePublikowanie zdjęć na stronie Facebook

FacebookClient facebookClient = null; 
FacebookType publishPhotoResponse = facebookClient.publish("me/photos", FacebookType.class, 
BinaryAttachment.with("bird.jpg", FaceBookUpload.class.getResourceAsStream("/bird.jpg")), 
       Parameter.with("message", "Test cat")); 

System.out.println("Published photo ID: " + publishPhotoResponse.getId()); 

Jest to błąd, który natknąłem

Exception in thread "main" java.lang.IllegalArgumentException: Binary attachment data cannot be null. 
at com.restfb.BinaryAttachment.<init>(BinaryAttachment.java:68) 
at com.restfb.BinaryAttachment.with(BinaryAttachment.java:113) 
at pkg.am.ncrb.shot.FaceBookUpload.main(FaceBookUpload.java:31) 

Również próbowałem poniższy kod

Ale żaden z nich pracuje

InputStream is = new FileInputStream(new File("bird.jpg")); 
    FacebookType publishVideoResponse =facebookClient.publish("me/photos",FacebookType.class, 
      BinaryAttachment.with("bird.jpg", is), 
      Parameter.with("message", "MY PHOTO POST"));  

i robi się wyjątek

Exception in thread "main" java.lang.NullPointerException 
at pkg.am.ncrb.shot.FaceBookUpload.main(FaceBookUpload.java:35) 

Potrzebuję tylko przykładowego fragmentu kodu, który przenosi mój obraz na facebooka. Nie wiem, co poszło nie tak.

+2

_ „Ponadto istnieje bird.jpg obraz w moim folderze projektu” _ - ale '/ bird.jpg' raczej wygląda odniesienie do katalogu głównego serwera. – CBroe

+1

Być może powinieneś sprawdzić za pomocą debuggera, czy obraz można znaleźć. NPE wygląda na to, że obraz nie znajduje się we właściwym miejscu w systemie plików. – Norbert

+0

W przypadku pytania "mnie/zdjęcia" możesz z niego skorzystać. Aby to żądanie zadziałało, musisz użyć tokena dostępu do strony (zamiast tokenu dostępu użytkownika lub tokena dostępu Applicaiton) z włączoną uprawnieniami publish_pages. Zobacz https://developers.facebook.com/docs/graph-api/reference/page/photos#Creating – corvuszero

Odpowiedz

2
  1. W Javie, nie można użyć obiektu, który jest ustawiony na null. Dostaniesz NullPointerException.

    Obiekt o numerze null to FacebookClient. Powinieneś go zainicjować:

    FacebookClient facebookClient = new DefaultFacebookClient(); 
    
  2. Gdzie umieszczasz zdjęcie? Jeśli jest osadzony w pliku jar, użyj FaceBookUpload.class.getResourceAsStream("/bird.jpg"). Jeśli znajduje się w bieżącym katalogu (prawdopodobnie), użyj new FileInputStream(new File("bird.jpg")).

0

Na stronie Facebooka:

REST API

Poprzednio przestarzałe REST API został całkowicie usunięty w v2.1, a wszystkie aplikacje nadal używa go muszą migrować do korzystania Graph API.

Jeśli aplikacja mobilna używa nieudokumentowanego punktu końcowego auth.ExtendSSOAccessToken z interfejsu API REST w celu przedłużenia żetonów dostępu długotrwałego, musisz zaktualizować aplikację, aby korzystać z pełnego zestawu SDK do systemu iOS lub Android. Pakiety SDK automatycznie obsłużą rozszerzenia tokenów dostępu.

Źródło Facebook Developers Docs

Powiązane problemy