Android Facebook-sdf例外:无法为用户生成预览

时间:2014-01-09 16:03:23

标签: android facebook facebook-opengraph facebook-android-sdk

我正在开发一个简单的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会在屏幕上显示一秒钟,然后在没有任何操作的情况下消失

2 个答案:

答案 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)

我们之前有过完全相同的错误。 检查您是否在OpenGraphActionDialogBu​​ilder中使用了正确的操作类型。 我们使用正确的操作类型参数修复了相同的错误。 在您的情况下,您应该检查“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。它应该修复!