AppInviteDialog 在 Android Facebook SDK 4.0 中不工作

AppInviteDialog not working in Android Facebook SDK 4.0

经过长时间的研究并尝试自行解决此问题,我没有找到任何可接受的工作结果。

正在关注 this documentation 我正在尝试邀请朋友使用我的应用程序。所有元素(例如共享按钮)都可以正常工作。

唯一的问题是 "Invite to app" 对话框。选择好友后,对话框显示红色警告图标,"send" 按钮变为 "retry" 按钮。

我已尝试通过多种方式解决此问题 - 在 FB dev page (like changing app category: game, travel .etc), adding new permission for sharing (but I haven't found, that inviting is required it), using GamesRequests 中配置我的应用程序(但我的应用程序不是游戏,它是 android + canvas 应用程序)。所以我又回到了 AppInviteDialog。

此外,我尝试使用它自己的实例和监听器,而不是静态的 class。

inviteDialog = new AppInviteDialog(this);
inviteDialog.registerCallback(callbackManager, new FacebookCallback<Result>() {
    @Override
    public void onSuccess(Result result) {
        Log.i(TAG, "MainACtivity, InviteCallback - SUCCESS!");
    }

    @Override
    public void onCancel() {
        Log.i(TAG, "MainACtivity, InviteCallback - CANCEL!");
    }

    @Override
    public void onError(FacebookException error) {
        Log.e(TAG, "MainACtivity, InviteCallback - ERROR! " + error.getMessage());
    }
});

然后调用它,就像在 tutorial 中一样:

 if(AppInviteDialog.canShow()) {
        AppInviteContent content = new AppInviteContent.Builder()
            .setApplinkUrl(appUrl)
            .setPreviewImageUrl(imagePreviewUrl)
            .build();
            //AppInviteDialog.show(this, content); //static
        inviteDialog.show(content); //my instance
  }

但我得到的是:

编辑:

使用 AppLinks 为我的应用程序创建 link 并在 AppInviteDialog 中使用它后,现在一切正常。 有点迷惑,在documentation中没有明确说明,需要用什么样的link:"AppLinks link"还是"app link (link to your fb app)".

是否有错误信息?

如果我不使用 AppLink,我会得到这个。

https://developers.facebook.com/quickstarts/1374389166202673/?platform=app-links-host

我遇到了同样的问题,我的原因是没有在 facebook CallbackManager 上调用 onActivityResult。我就是这样修复它的:

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

    facebookCallbackManager = CallbackManager.Factory.create();
    // ...
}

然后这里是我遇到错误的地方:

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

    // This is the line I was lacking
    facebookCallbackManager.onActivityResult(requestCode, resultCode, data);
}

添加 onActivityResult 后,我​​的回调被触发:

AppInviteDialog appInviteDialog = new AppInviteDialog(activity);
FacebookCallback callback =  new FacebookCallback<AppInviteDialog.Result>() {
        @Override
        public void onSuccess(AppInviteDialog.Result result) {
        }

        @Override
        public void onCancel() {
        }

        @Override
        public void onError(FacebookException error) {
        }
    };
appInviteDialog.registerCallback(facebookCallbackManager, callback);
appInviteDialog.show(content);