2015-04-29 23 views
13

Tôi muốn đăng hình ảnh lên trang facebook của mình. Dưới đây là mã tôi đã thử từ trang hướng dẫn sử dụng RestFB. Nhưng nó cho thấy một số loại lỗi mà không được hiểu. Cũng trong xuất bản ("tôi/ảnh") tôi có nên chuyển tên người dùng thay vì viết tôi?. Ngoài ra hình ảnh bird.jpg tồn tại trong thư mục dự án của tôi. Ai giúp tôi với? Bất kỳ loại trợ giúp sẽ được đánh giá caoĐăng ảnh lên trang 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()); 

Đây là lỗi mà tôi gặp phải

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) 

Ngoài ra tôi đã thử đoạn code dưới đây

Nhưng không ai trong số đó đang làm việc

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

và nhận được ngoại lệ

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

Tôi chỉ cần một đoạn mã mẫu đẩy hình ảnh của mình vào facebook. Tôi không biết chuyện gì đã xảy ra.

+2

_ “Ngoài ra hình ảnh bird.jpg tồn tại trong thư mục dự án của tôi” _ - nhưng '/ bird.jpg' thay vì trông giống như một tham chiếu đến thư mục máy chủ gốc. – CBroe

+1

Có lẽ bạn nên kiểm tra với một trình gỡ lỗi nếu hình ảnh có thể được tìm thấy. NPE trông giống như hình ảnh không đúng vị trí trong hệ thống tập tin. – Norbert

+0

Đối với câu hỏi "tôi/ảnh", bạn có thể sử dụng câu hỏi đó. Để yêu cầu này hoạt động, bạn phải sử dụng Mã truy cập trang (thay cho Mã thông báo truy cập người dùng hoặc Mã truy cập ứng dụng) với quyền được publish_pages được bật. Xem https://developers.facebook.com/docs/graph-api/reference/page/photos#Creating – corvuszero

Trả lời

2
  1. Trong Java, bạn không thể sử dụng một đối tượng mà được thiết lập để null. Bạn sẽ nhận được NullPointerException.

    Đối tượng là nullFacebookClient. Bạn nên khởi chạy nó:

    FacebookClient facebookClient = new DefaultFacebookClient(); 
    
  2. Bạn đang đặt ảnh ở đâu? Nếu nó được nhúng trong tệp jar, hãy sử dụng FaceBookUpload.class.getResourceAsStream("/bird.jpg"). Nếu nó nằm trong thư mục hiện tại (có thể), hãy sử dụng new FileInputStream(new File("bird.jpg")).

0

Từ trang Facebook:

REST API

Các API REST bị phản đối trước đó đã được loại bỏ hoàn toàn trong v2.1, và tất cả các ứng dụng vẫn còn sử dụng nó phải chuyển sang sử dụng API đồ thị.

Nếu ứng dụng dành cho thiết bị di động của bạn đang sử dụng auth.ExtendSSOAccessToken endpoint không có giấy tờ từ REST API để mở rộng mã thông báo truy cập lâu dài, bạn cần nâng cấp ứng dụng của mình để sử dụng SDK iOS hoặc Android đầy đủ. SDK sẽ tự động xử lý mã thông báo truy cập mở rộng.

Nguồn Facebook Developers Docs

Các vấn đề liên quan