如何使用对话框在Facebook墙上发布图像

时间:2014-03-31 07:12:21

标签: android facebook facebook-graph-api dialog facebook-android-sdk

我正在使用 Facebook SDK 并在我的应用中调用WebDialog在Facebook上发布内容,它可以发布文字但不是图片,是否可以使用参数。{ {1}}要做什么?

如何使用putByteArray解决此问题?

webDialog

2 个答案:

答案 0 :(得分:1)

您可以使用Simple 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();
            }
        }
    }

答案 1 :(得分:0)

单独picture不会工作,你也必须提供一些link。合乎逻辑的权利?

如果您想要添加图片,则在发布Feed时,必须有一些链接和desc / caption(可选)与之关联。由于Feed中的图片与您分享的链接相关联。这是饲料的样子 -

如果你一个人想张贴一张不是饲料的照片;您应该使用/photos API代替并发布照片。

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