0

我正在使用Facebook SDK和调用WebDialog在我的应用程序发布的东西在Facebook上,它可以发布文字,但图像不是,它不能使用参数。 putByteArray要做什么?如何在对话框的Facebook墙上张贴图像

我怎样才能解决这个问题webDialog

Bundle params = new Bundle(); 
params.putByteArray("picture", baos.toByteArray()); 

WebDialog feedDialog = (
    new WebDialog.FeedDialogBuilder(CameraActivity.this, 
     mData.sFB, 
     params)) 
    .setOnCompleteListener(new OnCompleteListener(){ 
     @Override 
     public void onComplete(Bundle values,FacebookException error) { 
     }) 
     .build();     
feedDialog.show(); 

回答

1

您可以使用简单的Facebook为此,它非常易于使用。发布完整的课程供您参考,只需参考并检查。

package com.core; 

    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.Window; 
    import android.widget.Toast; 

    import com.minoritybiz.BaseActivity; 
    import com.minoritybiz.R; 
    import com.minoritybiz.data.ConstantData; 
    import com.minoritybiz.facebook.entities.Feed; 
    import com.minoritybiz.facebooks.Permissions; 
    import com.minoritybiz.facebooks.SimpleFacebook; 
    import com.minoritybiz.facebooks.SimpleFacebookConfiguration; 

    public class FacebookShareActivity extends BaseActivity { 

     private SimpleFacebook simpleFacebook; 
     private SimpleFacebookConfiguration.Builder simpleFacebookConfigurationBuilder; 
     private SimpleFacebookConfiguration simpleFacebookConfiguration; 

     private String IN_MESSAGE; 
     private String IN_CAPTION; 
     private String IN_NAME; 
     private String IN_PICTURE; 
     private String IN_LINK; 
     private String IN_DESCRIPTION; 

     private String shareLabel = "Download our mobile app on ITunes or Google Play"; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 

      setContentView(R.layout.ij_facebook_share); 

      simpleFacebook = SimpleFacebook.getInstance(this); 
      simpleFacebookConfigurationBuilder = new SimpleFacebookConfiguration.Builder(); 
      simpleFacebookConfigurationBuilder.setAppId(ConstantData.facebook_app_id); 
      simpleFacebookConfigurationBuilder.setPermissions(new Permissions[] { Permissions.PUBLISH_ACTION, Permissions.PUBLISH_STREAM }); 
      simpleFacebookConfiguration = simpleFacebookConfigurationBuilder.build(); 
      SimpleFacebook.setConfiguration(simpleFacebookConfiguration); 
      getIntentData(); 
      if (simpleFacebook.isLogin()) { 
       publishFeed(); 
      } else { 
       simpleFacebook.login(new OnLoginListener()); 
      } 
     } 

     private void getIntentData() { 

      try { 
       IN_NAME = this.getIntent().getStringExtra("NAME"); 
       IN_DESCRIPTION = this.getIntent().getStringExtra("DESCRIPTION"); 
       IN_LINK = this.getIntent().getStringExtra("LINK"); 
       IN_PICTURE = this.getIntent().getStringExtra("THUMB"); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

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

     private void publishFeed() { 
      final Feed feed = new Feed.Builder().setName(IN_NAME).setDescription(IN_DESCRIPTION).setPicture(IN_PICTURE).setMessage(ConstantData.eventCatName).setLink(IN_LINK) 
        .setMessage(shareLabel).build(); 
      simpleFacebook.publish(feed, new onPublishListener()); 
     } 

     class OnLoginListener implements SimpleFacebook.OnLoginListener { 

      @Override 
      public void onLogin() { 
       publishFeed(); 
      } 

      @Override 
      public void onNotAcceptingPermissions() { 
      } 

      @Override 
      public void onThinking() { 
      } 

      @Override 
      public void onException(Throwable throwable) { 
      } 

      @Override 
      public void onFail(String reason) { 
       Toast.makeText(FacebookShareActivity.this, "Failure", Toast.LENGTH_LONG).show(); 
      } 
     } 

     class onPublishListener implements SimpleFacebook.OnPublishListener { 

      @Override 
      public void onComplete(String id) { 
       hideProgressDialog(); 
       Toast.makeText(FacebookShareActivity.this, "Posted Successfully...", Toast.LENGTH_LONG).show(); 
       finish(); 
      } 

      @Override 
      public void onThinking() { 
       // showProgressDialog("Doing Facebook Sharing...",FacebookShareActivity.this,true); 
       showProgressDialog(); 
      } 

      @Override 
      public void onException(Throwable throwable) { 
       hideProgressDialog(); 
       throwable.printStackTrace(); 
      } 

      @Override 
      public void onFail(String reason) { 
       hideProgressDialog(); 
       Toast.makeText(FacebookShareActivity.this, "Post failed due to some error...", Toast.LENGTH_LONG).show(); 
       finish(); 
      } 
     } 
    } 
0

当家picture不会工作,你必须给一些link也。它的逻辑权利?

虽然张贴饲料,如果你想添加的图片必须有一些链接,并与它相关递减/标题(可选)。由于Feed中的图片与您共享的链接相关联。这里有一个饲料的外观喜欢 -

如果仅想发布一个光电,这不是一个饲料;您应该使用/photos API来发布照片。

因此,将picturelink添加到参数中,否则更改API。

+0

我想从移动图像后,当我使用其他应用程序,他们发布的图片将会显示一个对话框,显示的画面,也许可以键入一些word.after发送,它会显示在手机更新状态,所以..,怎么做? – user2724022

+0

查看您正在讨论的应用,使用带'picture'和'link'的'/ feed'。他们是图片+链接。只需用你的'图片'链接到你的应用程序。 –

+0

我想从我的手机上传图片,但图片不具有“链接”(我贴的图片文件路径,但显示错误)。如何上传图片从webdialog墙? – user2724022