2015-12-07 2 views
3

Я разрабатываю приложение для Android, которое должно позволить пользователю делиться записью на Facebook. Для статистики я хотел бы знать, успешно ли пользователь опубликовал сообщение или решил отменить.Android Facebook SDK проверить, если доля успешна

Вопрос: Есть ли способ проверить, было ли сообщение успешно распространено с помощью ShareDialog из Facebook SDK 4.5, без разрешения publish_action?

ShareDialog открывает диалоговое окно совместного использования Facebook и, если доля была успешной, вызывается метод onSuccess в функции обратного вызова (или onCancel, если пользователь отменяет диалог общего доступа). Проблема заключается в том, что у пользователя нет приложения Facebook, установленного на его устройстве. Затем ShareDialog возвращается к браузеру по умолчанию для совместного использования, но функция обратного вызова onSuccess всегда выполняется в этом случае, даже если пользователь нажал кнопку отмены!

Мой текущий код выглядит следующим образом:

FacebookCallback<Sharer.Result> shareCallback = new FacebookCallback<Sharer.Result>() { 
    @Override 
    public void onCancel() { 
     Log.d(LOG_TAG, "fb SHARE canceled"); 
    } 

    @Override 
    public void onError(FacebookException error) { 
     Log.d(LOG_TAG, "fb SHARE error"); 
    } 

    @Override 
    public void onSuccess(Sharer.Result result) { 

     String postId = result.getPostId(); 
     if (postId != null) 
     { 
      // record successful FB share 
      Log.d(LOG_TAG, "fb SHARE success"); 
     } 
    } 
} 

FacebookSdk.sdkInitialize(getApplicationContext()); 
callbackManager = CallbackManager.Factory.create(); 
shareDialog = new ShareDialog(this); 
shareDialog.registerCallback(callbackManager, shareCallback); 

Этот код работает отлично, но это требует publish_actions разрешение на проверку postId. Есть ли другой способ проверить, был ли обмен успешным, не требуя дополнительных (publish_actions) разрешений от Facebook (потому что это слишком больно)?

+2

я считаю, that's не представляется возможным, потому что это было бы легко злоупотреблять для стимулирования - которое не допускаются. – luschn

+0

сообщите нам, если вы нашли что-то новое – Nilabja

+0

@Nilabja К сожалению, нет. Кажется, что диалог общего доступа браузера, всегда возвращающийся к 'onSuccess', не является ошибкой, а функцией. Мне нужно написать свой код, чтобы использовать 'publish_actions' (я все еще не уверен, как запускать' publish_actions'). – cakan

ответ

2

Существует проблема с этой проблемой. Thing is postId всегда имеет значение null, когда вы публикуете приложение Facebook. PostId переходит к вашему обратному вызову onSuccess, когда вы делитесь без приложения FB. Решения заставить приложение использовать веб-канал и не FB приложение для обмена:

shareDialog.show(linkContent, ShareDialog.Mode.FEED); 
+0

Работает ли он? Поскольку это просто не сработало для меня. – Zbyszek