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 в вашем коде. Это должно исправить!