android - 共享回调不适用于 Facebook SDK 4 Android

标签 android facebook-sdk-4.0 facebook-share

我最近将我的应用程序移到了 FB SDK 4.0,我在共享时遇到了一些奇怪的问题。共享对话框效果很好——我可以与 Facebook 应用程序和 WebDialog 共享。但是,在共享成功/失败后,我的回调根本不起作用 - 所以我什至无法 toast 或记录任何内容。 这是我的做法:

shareDialog.registerCallback(fbManager, new FacebookCallback<Sharer.Result>() {
            @Override
            public void onSuccess(Sharer.Result result) {
                // This doesn't work
                Toast.makeText(f.getActivity(), "You shared this post", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException e) {
                // This doesn't work
                e.printStackTrace();
            }
        });

我什至尝试调试应用程序 - 没有效果 - 甚至没有调用此代码。

那么你能指出我做错了什么或我遗漏了什么吗?

更新

因为我使用特殊的类来处理 FB SDK,下面是它的一部分:

private static CallbackManager fbManager;

public static CallbackManager init(Activity c) {
    if (!FacebookSdk.isInitialized()) {
        FacebookSdk.sdkInitialize(c);
    }

    return fbManager = CallbackManager.Factory.create();
}

 ...

 public static void share(final Fragment f, final String title, final String description, final String link) {
    ShareDialog shareDialog = new ShareDialog(f);
    shareDialog.registerCallback(fbManager, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result) {
            Toast.makeText(f.getActivity(), "You shared this post", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel() {
        }

        @Override
        public void onError(FacebookException e) {
            e.printStackTrace();
        }
    });
    shareDialog.show(f, composeContent(title, description, link));

下面是它在 fragment 中的样子:

 private CallbackManager callbackManager;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    callbackManager = FacebookHelper.init(getActivity());
}

...

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

 private void publishStory() {
    FacebookHelper.share(this,
            "Title",
            getResources().getString(R.string.sharing_text),
            sharingLink);
}

最佳答案

你必须重写 onActivityResult 方法, 按如下方式更新您的方法,

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

关于android - 共享回调不适用于 Facebook SDK 4 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29486020/

相关文章:

android - 如何在相同的 xml 布局中将元素放在彼此之上?

ios - 如何使用 Swift 和 iOS 使用 Facebook 身份验证注销用户?

android - 重新询问 Facebook 中拒绝的权限不起作用

由于嵌入式浏览器,Android Facebook 分享对话框阻止登录

Android动画同时缩小和淡出一个View

android - 有没有关于如何将 "page-flip"实现到 Android 应用程序的教程?

android - 如何从 CameraX 压缩图像/byteArray

java - Android 应用程序 : Facebook LoginManager gives me "publish_actions" permission but app never goes through callbackManager callback( Facebook SDK 4. 18.0)?

facebook-graph-api - 如何衡量我的应用程序Facebook分享流量? (非传统)

Android:使用 SDK 4.0 在 Facebook 中分享 OpenGraph Stories