2015-05-13 21 views
5

Xin giúpLàm thế nào bài tường facebook android-sdk: 4.0.0

tôi mã HAVA cho nút bưu điện đến tường:

btnPostToWall.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     postToWall(); 
    } 
}); 

public void postToWall() { 
    // post on user's wall. 
    facebook.dialog(this, "feed", new DialogListener() { 

     @Override 
     public void onFacebookError(FacebookError e) { 
     } 

     @Override 
     public void onError(DialogError e) { 
     } 

     @Override 
     public void onComplete(Bundle values) { 
     } 

     @Override 
     public void onCancel() { 
     } 
    }); 

} 

Nhưng I Have New Faceboof android sdk 4.0.0 và mã này depreacated

Cách đăng lên tường bằng thư viện mới?

tôi đọc this, nhưng tôi không hiểu làm thế nào để sử dụng

+1

Nếu bạn muốn chỉ cần gửi văn bản, bạn phải sử dụng tôi/thức ăn và xây dựng của bạn phương pháp riêng: https://developers.facebook.com/docs/android/graph, đối với các tùy chọn chia sẻ còn lại, tài liệu bạn đã chỉ ra có các ví dụ rõ ràng. Tôi hy vọng nó sẽ giúp. –

Trả lời

5

Có lẽ nó không hẳn là giải pháp bạn đang tìm kiếm, nhưng tôi đang sử dụng nó.

Facebook Android SDK 4 có lớp ShareApi để chia sẻ nội dung của bạn. Lớp học này có phương pháp tĩnh share():

public static void share(
      final ShareContent shareContent, 
      final FacebookCallback<Sharer.Result> callback) { 
     new ShareApi(shareContent) 
       .share(callback); 
    } 

và chuỗi riêng không độc lập message. Vì vậy, khi bạn đang cố gắng chia sẻ một cái gì đó (cho ex.

ShareApi api = new ShareApi(content); 
api.setMessage("My message"); 
api.share(content, new FacebookCallback<Sharer.Result>() ...) 

) sẽ được tạo thể hiện mới của ShareApi với message = null và thông điệp của bạn sẽ không được thêm.

Giải pháp:

  1. mở lớp ShareApi nếu bạn đang sử dụng Facebook SDK như thư viện bên ngoài hoặc bản sao lớp này từ Github https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/share/ShareApi.java nếu bạn đang sử dụng kho Maven.

  2. Thay đổi mã này:

    public static void share(
        final ShareContent shareContent, 
        final FacebookCallback<Sharer.Result> callback) { 
    new ShareApi(shareContent) 
         .share(callback); 
    } 
    

    này một:

    public static void share(final String message, 
        final ShareContent shareContent, 
        final FacebookCallback<Sharer.Result> callback) { 
    new ShareApi(message, shareContent) 
         .share(callback); 
    } 
    
  3. Thay đổi mã này:

    này một:

    public ShareApi(String message, final ShareContent shareContent) { 
        this.message = message; 
        this.shareContent = shareContent; 
        this.graphNode = DEFAULT_GRAPH_NODE; 
    } 
    
  4. Sử dụng thay đổi ShareApi lớp học của bạn để chia sẻ nội dung của bạn:

    ShareApi.share("My message", content, new FacebookCallback<Sharer.Result>() { 
    
         @Override 
         public void onSuccess(Sharer.Result result) { 
          if (AppConfig.DEBUG) { 
           Log.d(TAG, "SUCCESS"); 
          } 
         } 
    
         @Override 
         public void onCancel() { 
          if (AppConfig.DEBUG) { 
           Log.d(TAG, "CANCELLED"); 
          } 
         } 
    
         @Override 
         public void onError(FacebookException error) { 
          if (AppConfig.DEBUG) { 
           Log.d(TAG, error.toString()); 
          } 
         } 
        }); 
    

Nếu bạn chỉ muốn chia sẻ văn bản, bạn có thể sử dụng mã dưới đây để biết content đối tượng:

ShareLinkContent content = new ShareLinkContent.Builder() 
       .build(); 

Bạn' đã đọc hướng dẫn này https://developers.facebook.com/docs/sharing/android và có thể thêm ShareContent khác vào bài đăng của bạn. Sử dụng examples from Facebook Github repository để hiểu rõ hơn về SDK mới.

P.S. Tất nhiên, bạn nên có mã thông báo truy cập hợp lệ và sự cho phép publish_actions.

+1

Câu trả lời hay, nó đã giúp tôi, nhưng tôi muốn đề xuất một sự thay đổi. Thay vì thay đổi lớp ShareApi, chỉ cần gọi 'api.share (new FacebookCallback () ...)' với tham chiếu ShareApi bạn vừa tạo. Hàm chia sẻ không tĩnh này có thể không được công khai khi bạn viết câu trả lời. – NineToeNerd

6

Các tài liệu Facebook chính thức về làm thế nào để chia sẻ từ Android SDK 4.0 nằm ở đây:

https://developers.facebook.com/docs/sharing/android

liên kết đó có ví dụ về làm thế nào để chia sẻ bằng cách gọi API Graph hoặc chia sẻ bằng cách gọi ứng dụng Facebook bản địa hộp thoại.

Dưới đây là cách tôi thực hiện hộp thoại phần trong ứng dụng của riêng tôi:

trong xml cho hoạt động/fragment tôi thêm Button

<Button 
     android:layout_width="144dp" 
     android:layout_height="144dp" 
     android:id="@+id/shareFacebookButton" 
     android:text="" 
     android:background="@drawable/facebook_button" 
     android:layout_gravity="center" 
     android:layout_marginBottom="6dp" 
     /> 

Sau đó bên trong Fragment:

Button shareButton = (Button)view.findViewById(R.id.shareFacebookButton); 
shareDialog = new ShareDialog(this); 
callbackManager = CallbackManager.Factory.create(); 
shareDialog.registerCallback(callbackManager, new 

FacebookCallback<Sharer.Result>() { 
    @Override 
    public void onSuccess(Sharer.Result result) {} 

    @Override 
    public void onCancel() {} 

    @Override 
    public void onError(FacebookException error) {} 
}); 

shareButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     if (ShareDialog.canShow(ShareLinkContent.class)) { 
      ShareLinkContent linkContent = new ShareLinkContent.Builder() 
       .setContentTitle("Hello Facebook") 
       .setContentDescription("The 'Hello Facebook' sample showcases simple Facebook integration") 

      .setContentUrl(Uri.parse("http://developers.facebook.com/android")) 
          .build(); 

     shareDialog.show(linkContent); 
      } 
    }}); 

Bây giờ, khi ai đó nhấp vào nút, họ sẽ được gặp với hộp thoại Facebook như bạn mong đợi.

Hy vọng điều này sẽ hữu ích.

+0

Cách đăng hình ảnh cùng với tiêu đề nội dung và mô tả? –

+0

chỉ sử dụng '.setImageUrl (imageUrl)' trong đó 'imageUrl' là một kiểu đối tượng' URI' hợp lệ. –

1

Ví dụ này hoạt động đầy đủ (13.02.2017) dựa trên Câu trả lời tối đa.

Gradle: biên dịch 'com.facebook.android:facebook-android-sdk:[4,5)'

public class ShareOnFacebook extends Activity { 

    private static final String TAG = "ShareOnFacebook"; 

    CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     shareOnWall(); 
    } 

    void shareOnWall() { 
     ShareDialog shareDialog = new ShareDialog(this); 
     callbackManager = CallbackManager.Factory.create(); 
     shareDialog.registerCallback(callbackManager, new 

       FacebookCallback<Sharer.Result>() { 
        @Override 
        public void onSuccess(Sharer.Result result) { 
         Log.d(TAG, "onSuccess: "); 
         Toast.makeText(ShareOnFacebook.this, "onSuccess", Toast.LENGTH_SHORT).show(); 
        } 

        @Override 
        public void onCancel() { 
         Log.d(TAG, "onCancel: "); 
         Toast.makeText(ShareOnFacebook.this, "onCancel", Toast.LENGTH_SHORT).show(); 
        } 

        @Override 
        public void onError(FacebookException error) { 
         Log.d(TAG, "onError: "); 
         Toast.makeText(ShareOnFacebook.this, "onError" + error.toString(), Toast.LENGTH_SHORT).show(); 
        } 
       }); 

     if (ShareDialog.canShow(ShareLinkContent.class)) { 
      ShareLinkContent linkContent = new ShareLinkContent.Builder() 
        .setContentTitle("Hello Facebook") 
        .setContentDescription("The 'Hello Facebook' sample showcases simple Facebook integration") 
        .setContentUrl(Uri.parse("http://developers.facebook.com/android")) 
        .build(); 

      shareDialog.show(linkContent); 
     } 
    } 

    @Override 
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 


} 
+0

https://developers.facebook.com/docs/sharing/android, Kể từ ngày 18 tháng 4 năm 2017, các thông số sau không còn được hỗ trợ bởi Graph API phiên bản 2.9 trở lên. Đối với phiên bản 2.8 trở xuống, thông số sẽ tiếp tục hoạt động cho đến ngày 17 tháng 7 năm 2017. nội dungTiêu đề đại diện cho tiêu đề nội dung trong liên kết a imageURL, URL của hình ảnh thu nhỏ sẽ xuất hiện trên bài đăng nội dungMô tả nội dung, thường là 2-4 câu. Tóm lại, tất cả đều cần kiểm tra tài liệu trên facebook mọi lúc –

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