【问题标题】:facebook share permission from android appfacebook 来自 android 应用程序的共享权限
【发布时间】:2016-04-12 18:01:30
【问题描述】:

我需要通过我的 Android 应用在 facebook 上分享内容。我可以登录并检索使用个人资料信息,但我无法分享帖子。 shareDialog.registerCallback 在我的情况下没有执行。 对于来自我的应用程序的Facebook 共享,我是否需要提供写入权限?如果是,什么时候给?

我的登录和分享代码,

private CallbackManager callbackManager;

    ShareDialog shareDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();

        setContentView(R.layout.activity_main);

        LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "email"));
        LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {


                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        callbackManager = CallbackManager.Factory.create();
                        shareDialog = new ShareDialog(MainActivity.this);
                        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
                            @Override
                            public void onSuccess(Sharer.Result result) {

                                if (ShareDialog.canShow(ShareLinkContent.class)) {
                                    ShareLinkContent linkContent = new   ShareLinkContent.Builder()
                                            .setContentTitle("Share on fb")

                                            .setContentUrl(Uri.parse("https://www.google.com"))
                                            .build();

                                    shareDialog.show(linkContent);
                                }
                            }

                            @Override
                            public void onCancel() {

                            }

                            @Override
                            public void onError(FacebookException e) {

                            }
                        });
                    }

                    @Override
                    public void onCancel() {

                    }

                    @Override
                    public void onError(FacebookException e) {

                    }
                });

               //     LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "email"));
    }

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

我想要的方式就像单击共享按钮(下图)时应该登录并在 facebook 上共享,我想我应该为此使用自己的自定义界面。

【问题讨论】:

  • 不,您在使用 ShareDialog 时不需要 publish_action 权限。能否请您发布您的 AndroidManifest.xml 文件?
  • 请看我更新了我的问题

标签: java android facebook share


【解决方案1】:

是的,您需要获得 publish_actions 权限。试试这个代码。

ShareDialog shareDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();

setContentView(R.layout.activity_main);

LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "email"));
LoginManager.getInstance().registerCallback(callbackManager,
        new FacebookCallback<LoginResult>() {


            @Override
            public void onSuccess(LoginResult loginResult) {
                callbackManager = CallbackManager.Factory.create();
                shareDialog = new ShareDialog(MainActivity.this);
                shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
                    @Override
                    public void onSuccess(Sharer.Result result) {

                        if (ShareDialog.canShow(ShareLinkContent.class)) {
                            ShareLinkContent linkContent = new   ShareLinkContent.Builder()
                                    .setContentTitle("Share on fb")

                                    .setContentUrl(Uri.parse("https://www.google.com"))
                                    .build();

                            shareDialog.show(linkContent);
                        }
                    }

                    @Override
                    public void onCancel() {

                    }

                    @Override
                    public void onError(FacebookException e) {

                    }
                });
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException e) {

            }
        });

       //     LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "email","publish_actions"));
}

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

那么你需要创建ShareOpenGraphObject

// Create an object
ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
    .putString("og:type", "books.book")
    .putString("og:title", "A Game of Thrones")
    .putString("og:description", "In the frozen wastes to the north of Winterfell, sinister and supernatural forces are mustering.")
    .putString("books:isbn", "0-553-57340-3")
    .build();

那么你将不得不创建动作

ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
    .setActionType("books.reads")
    .putObject("book", object)
    .build();

那么你将不得不制作内容

 ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
    .setPreviewPropertyName("book")
    .setAction(action)
    .build();

然后

ShareDialog.show(activityOrFragment, content);

注意关注代码是从 facebook 开发者网站复制而来的。点击此链接了解更多guidance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2014-08-29
    • 2012-03-04
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多