2015-04-29 15 views
13

Voglio pubblicare le mie immagini sulla mia pagina Facebook. Di seguito è riportato il codice che ho provato, tratto dalla pagina di manuale di RestFB. Ma sta mostrando qualche tipo di errore che non viene capito. Anche in pubblicare ("io/foto") devo passare il mio nome utente invece di scrivere me?. Anche l'immagine bird.jpg esiste nella mia cartella di progetto. Qualcuno può aiutarmi? Qualsiasi tipo di aiuto sarà apprezzatoPubblicazione dell'immagine sulla pagina 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()); 

Questo è l'errore che ho incontrato

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) 

Inoltre ho provato il codice qui sotto

Ma niente di tutto sta funzionando

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"));  

e riceve l'eccezione

Ho solo bisogno di un pezzo di codice di esempio che spinga la mia immagine in facebook. Non so cosa sia andato storto.

+2

_ “Anche la bird.jpg immagine esiste nella mia cartella progetto” _ - ma '/ bird.jpg' piuttosto appare come un riferimento alla cartella principale del server. – CBroe

+1

Forse dovresti controllare con un debugger se l'immagine può essere trovata. L'NPE sembra che l'immagine non sia nella posizione corretta nel filesystem. – Norbert

+0

Per la domanda "io/foto", puoi usare quella. Affinché questa richiesta funzioni, è necessario utilizzare un token di accesso alla pagina (anziché un token di accesso utente o un token di accesso di applicazione) con l'autorizzazione publish_pages abilitata. Vedi https://developers.facebook.com/docs/graph-api/reference/page/photos#Creating – corvuszero

risposta

2
  1. In Java, non è possibile utilizzare un oggetto che è impostato su null. Otterrai uno NullPointerException.

    L'oggetto che è null è FacebookClient. Si dovrebbe inizializzare:

    FacebookClient facebookClient = new DefaultFacebookClient(); 
    
  2. Dove stai mettendo la foto? Se è incorporato nel file jar, utilizzare FaceBookUpload.class.getResourceAsStream("/bird.jpg"). Se si trova nella directory corrente (probabilmente), utilizzare new FileInputStream(new File("bird.jpg")).

0

Dalla pagina Facebook:

REST API

L'API REST precedentemente obsoleto è stato completamente rimosso in V2.1, e tutte le applicazioni ancora utilizzando deve migrare a API grafico.

Se l'applicazione mobile utilizza l'endpoint auth.ExtendSSOAccessToken non documentato dall'API REST per estendere i token di accesso a lunga durata, è necessario aggiornare l'app per utilizzare l'SDK completo iOS o Android. Gli SDK gestiranno automaticamente i token di accesso estesi.

Fonte Facebook Developers Docs