我正在开发一个简单的Android应用程序,我想在Facebook上使用OpenGraphObject和OpenGraphAction发布状态。
如果我使用新的FacebookDialog.ShareDialogBuilder(this)
我没有问题,但当我使用FacebookDialog.OpenGraphActionDialogBuilder
时,我收到了错误:
01-09 15:56:29.594 11439-11439/simov.project2.yourcity E/Activity﹕ Error: com.facebook.FacebookException: Failed to generate preview for user.
的java
public void test(int position){
File f = (File)mImageAdapter.getItem(position);
Bitmap myBitmap= BitmapFactory.decodeFile(f.getAbsolutePath());
List<Bitmap> images = new ArrayList<Bitmap>();
images.add(myBitmap);
//Session session = Session.getActiveSession();
//session.requestNewPublishPermissions(new Session.NewPermissionsRequest(this, PERMISSION));
try {
addresses = mGeocoder.getFromLocation(mItenerariumState.getCurrentLocation().getLatitude()
, mItenerariumState.getCurrentLocation().getLongitude()
, 1);
} catch (IOException e) {
e.printStackTrace();
}
OpenGraphObject location = OpenGraphObject.Factory.createForPost("yourcity:location");
if(!addresses.isEmpty()){
location.setProperty("title", addresses.get(0).getAddressLine(0));
} else {
location.setProperty("title", "Unknown place");
}
location.setProperty("Description", "I visited this place using YourCity App");
OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
action.setProperty("location", location);
/* Request request = Request.newPostOpenGraphActionRequest(Session.getActiveSession(), action, new Request.Callback() {
@Override
public void onCompleted(Response response) {
//showPublishResult(getString(R.string.photo_post), response.getGraphObject(), response.getError());
}
});
request.executeAsync();*/
FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(this, action, "yourcity:visit","location")
.setApplicationName("YourCity")
//.setImageAttachmentsForAction(images, true)
.build();
uiHelper.trackPendingDialogCall(shareDialog.present());
}
重要提示,shareDialog会在屏幕上显示一秒钟,然后在没有任何操作的情况下消失
答案 0 :(得分:3)
已经处理了这个错误数小时。 这是我如何解决它。 您在代码中指定的操作和对象是导致问题的操作和对象。
Facebook开发人员指南中提供的样本我觉得不够好。 下面是一个可以使用的示例代码,可以完美地运行。 基本上要确保你的ObjectType - &gt;例如:video.other设置正确,你的动作类型如:video.watches设置正确。
void sometestCode(){
OpenGraphObject video = OpenGraphObject.Factory.createForPost("video.other");
video.setTitle("Awesome Video");
video.setDescription("This video will show you how to make the Opengraph work");
OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
action.setProperty("video", video);
action.setType("video.watches");
FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(this, action, "video")
.build();
uiHelper.trackPendingDialogCall(shareDialog.present());
}
答案 1 :(得分:1)
我们之前有过完全相同的错误。 检查您是否在OpenGraphActionDialogBuilder中使用了正确的操作类型。 我们使用正确的操作类型参数修复了相同的错误。 在您的情况下,您应该检查“yourcity:visit”是否是操作的名称。 去开发者consolle https://developers.facebook.com/x/apps/your-app-id/open-graph/action-types/并单击“获取代码”以执行要执行的操作。然后阅读看起来像这样的网址:
https://graph.facebook.com/me/app_namespace:app_action?...
然后在代码中使用正确的app_action。它应该修复!