Android Facebook-sdf Исключение: не удалось создать предварительный просмотр для пользователя

Я занимаюсь разработкой простого приложения для 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.

Джава

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 ответа

Имею дело с этой ошибкой в ​​течение нескольких часов. Вот как я это исправил. Действия и объекты, которые вы указали в своем коде, являются причиной проблемы.

Я считаю, что примеры, представленные в руководстве для разработчиков на Facebook, недостаточно хороши. Вот пример кода, который вы можете использовать, который будет работать отлично. В основном убедитесь, что ваш ObjectType -> например: 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());

    }

У нас была точно такая же ошибка несколько раз назад. Убедитесь, что вы используете правильный тип действия в OpenGraphActionDialogBuilder. Мы исправили ту же ошибку, просто используя правильный параметр типа действия. В вашем случае вам следует проверить, является ли "yourcity:visit" названием действия. Перейдите в консоль разработчиков https://developers.facebook.com/x/apps/your-app-id/open-graph/action-types/ и нажмите "Получить код" для действия, которое вы хотите реализовать. Затем прочитайте URL, который должен выглядеть примерно так:

https://graph.facebook.com/me/app_namespace:app_action?...

затем используйте правильное app_action в вашем коде. Это должно исправить!

Другие вопросы по тегам