经过长时间的研究并试图自行解决这个问题,我没有找到任何可接受的工作结果。
关注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
}
但我得到的只是:
使用AppLinks创建指向我的应用的链接后,在AppInviteDialog中使用它,现在一切正常。 这有点令人困惑,在documentation没有明确描述,需要使用什么样的链接:“AppLinks链接”或只是“app link(链接到你的fb app)”。
答案 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);