android - facebook shareDialog当应用程序是\未安装时 - 奇怪的行为?

原文 标签 android facebook-graph-api facebook-sharer facebook-share publish-actions

我正在使用Facebook的ShareDialog,以便在我的应用程序内的Facebook上共享打印屏幕图像。
Facebook应用程序安装后,运行正常。
如果没有安装Facebook应用程序,它就无法工作。我看到“加载”屏幕,然后它消失了,什么也没发生。
share dialog对象到达带有facebook异常的onerror回调:

{FacebookGraphResponseException: (#200) Requires extended permission: publish_actions httpResponseCode: 403, facebookErrorCode: 200, facebookErrorType: OAuthException, message: (#200) Requires extended permission: publish_actions}

那么,我真的需要“发布操作”权限只针对facebook web而不是facebook应用程序吗?奇怪的。。
Facebook writes:

https://developers.facebook.com/docs/sharing/android
"If the Facebook app is not installed it will automatically fallback to the web-based dialog"

"Now the SDK automatically checks for the native Facebook app. If it isn't installed, the SDK switches people to their default browser and opens the Feed Dialog."

我的代码:
mShareDialog = new ShareDialog(mActivity);

    mShareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result) {}

        @Override
        public void onCancel() {}

        @Override
        public void onError(FacebookException error) {
            if (error != null) {
                showDialog("facebook app isn't installed");
            }
        }
    });

    if (ShareDialog.canShow(ShareLinkContent.class)) {

        // get a screenshot
        Bitmap image = getScreenshot();

        SharePhoto photo = new SharePhoto.Builder()
                .setBitmap(image)
                .setCaption(getResources().getString(R.string.shareBodyText))
                .build();

        SharePhotoContent content = new SharePhotoContent.Builder()
                .addPhoto(photo)
                .build();

        mShareDialog.show(content);
    }

那么,为什么在没有“发布操作”的情况下安装facebook应用程序,而在没有安装facebook应用程序的情况下却无法运行呢?

最佳答案

这是sharephotocontent的要求,您必须安装本机faceboook应用程序才能共享照片。
Facebook Docs
照片
人们可以通过共享将你的应用中的照片共享到Facebook
对话框或自定义接口。
照片的大小必须小于12MB
人们需要安装原生Facebook for Android应用,7.0或更高版本

相关文章:

javascript - Javascript:如何捕获一个空的Facebook Graph json对象? -> {“数据”:[]}

javascript - Facebook API登录-记录

android - 如何以编程方式从Android的“在此说些什么……” facebook文本框中输入文本

android - 首次加载活动时,不显示SlidingTabLayout当前项目集

android - Android SDK占用了我的硬盘

android - ViewModel和ConstraintLayout Beta 2。不兼容的类型:活动不能转换为LifecycleOwner

ruby-on-rails - 如何使用考拉宝石get_object函数获取Facebook帖子的点赞次数

facebook - Facebook分享网址缩略图问题[重复]

facebook - 共享我的URL时,Facebook Sharer如何选择图像和其他元数据?

android - 如何拍摄合适尺寸的Android屏幕截图以进行发布?