AppInviteDialog无法在Android Facebook SDK 4.0中运行

时间:2015-04-01 14:44:47

标签: android facebook facebook-sdk-4.0

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

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

唯一的问题是“邀请到应用”对话框。选择朋友后,对话框显示红色警报图标,“发送”按钮变为“重试”按钮。

我尝试过多次修复此问题 - 在FB dev page中配置我的应用(例如更改应用类别:游戏,旅行.etc),添加新的共享权限(但我还没有找到,邀请是需要它),使用GamesRequests(但我的应用程序不是游戏,它是android + canvas应用程序)。所以我又回到了AppInviteDialog。

另外,我试图使用自己的实例,使用侦听器而不是静态类。

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
  }

但我得到的只是:

enter image description here

编辑:

使用AppLinks创建指向我的应用的链接后,在AppInviteDialog中使用它,现在一切正常。 这有点令人困惑,在documentation没有明确描述,需要使用什么样的链接:“AppLinks链接”或只是“app link(链接到你的fb app)”。

3 个答案:

答案 0 :(得分:2)

是否有错误消息?

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

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

答案 1 :(得分:0)

我还有另一个与此相关的问题。

如果我没有使用applink托管,但在我的网站上展示applink。它将无法邀请并显示相同的失败消息。

这是我的链接:

http://cn.cmcm.com/activity/2015/phonescanning/en.html

更有趣的是,这次邀请会不小心取得成功。

任何人都有同样的情况吗?

答案 2 :(得分:0)

我遇到了同样的问题,我的原因是没有在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);