我正在使用简单Facebook。不幸的是,我无法通过SimpleFacebook发送邀请,所以我使用AppInviteDialog邀请朋友。
public void openDialogInvite(final Activity activity) {
String AppURl = "my FB url..."; //Generated from //fb developers
String previewImageUrl = "urlImage...";
sCallbackManager = CallbackManager.Factory.create();
if (AppInviteDialog.canShow()) {
AppInviteContent content = new AppInviteContent.Builder()
.setApplinkUrl(AppURl).setPreviewImageUrl(previewImageUrl)
.build();
AppInviteDialog appInviteDialog = new AppInviteDialog(activity);
appInviteDialog.registerCallback(sCallbackManager,
new FacebookCallback<AppInviteDialog.Result>() {
@Override
public void onSuccess(AppInviteDialog.Result result) {
Log.d("Invitation", "Invitation Sent Successfully");
System.out.println("test onSuccess");
}
@Override
public void onCancel() {
System.out.println("test on cancel");
}
@Override
public void onError(FacebookException e) {
Log.d("Invitation", "Error Occured");
System.out.println("test Error"+e.getMessage());
}
});
appInviteDialog.show(content);
}
}
对话框打开Facebook邀请屏幕:
邀请进度条看起来一切正常
但是,我在对话框回调中没有得到响应。
我以为问题出在我的AppLink上,因为在下面的代码中,AppLink总是空的:
SimpleFacebook.initialize(this);
Uri targetUrl = AppLinks.getTargetUrlFromInboundIntent(ProfileActivity.this, getIntent());
if (targetUrl != null) {
Log.i("Activity", "App Link Target URL: " + targetUrl.toString());
} else {
AppLinkData.fetchDeferredAppLinkData(
this,
new AppLinkData.CompletionHandler() {
@Override
public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {
//process applink data
Log.i("Activity", "App Link Target URL: " + appLinkData);
}
});
}
AppLink总是空的,所以我使用了"快速启动托管API的应用链接",并手动创建了AppLink,我在对话框中发送它。
为什么我在回叫响应上什么都没得到?Facebook用户没有收到我的邀请?
我也有同样的问题。大约两周前,当我在一个开发分支测试它时,它曾经对我有效。在上周部署之后,受邀用户的appLinkData始终为null。
我做了一些进一步的更改,但即使现在签出了以前有效的修订,appLinkData也是空的。
很抱歉把这作为回答而不是评论,但我还没有足够的声誉。
是否调用CallbackManager.onActivityResult()
?
为了执行您注册的FacebookCallback
实例,请将其添加到您的活动或片段:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
sCallbackManager.onActivityResult(requestCode, resultCode, data);
}