Безотказный обмен Facebook в Android

Пользователь должен нажимать кнопку "Опубликовать" в диалоговом окне "Поделиться" каждый раз, когда проходит уровень. Мне нужно устранить эти трудности для пользователя. На данный момент я создал собственную историю и каждый раз просил пользователя нажимать на сообщение.

Вопрос:

  1. Я слышал о FB-посте для Open Graph. Возможно ли это в Android?

  2. Если в Android доступен пост FB без трений, не могли бы вы указать исправление в моем коде, который я вставил ниже.

  3. Если в Android доступен пост FB без ограничений, Какое разрешение мне нужно получить от пользователя?

Код

    ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
            .putString("og:type", "puzzlegameballmania:level")
            .putString("og:title", "Cleared Level-1 !!!")
            .putString("og:image", "http://ixxxxwsz.jpg")
            .putString("og:url", "https://play.google.com/store/apps/details?id=com.gamxxxxx.android")
            .putString("og:description", "Color of the balls matters more. Lets break the goal and go higher !")
            .putString("puzzlegameballmania:level:title", "LEVEL 1")
            .build();

    // Create an action
    ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
            .setActionType("puzzlegameballmania:clear")
            .putObject("puzzlegameballmania:level", object)
            .build();

    // Create the content
    ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
            .setPreviewPropertyName("puzzlegameballmania:level")
            .setAction(action) 
            .build();

    ShareDialog.show(AndroidLauncher.this, content);

1 ответ

Решение
  1. да
  2. Не использовать ShareDialog вместо этого используйте ShareApi, вот пример кода
  3. Требуется разрешение publish_actions, и ваше приложение будет рассмотрено Facebook

Вы также можете прочитать это сообщение для разработчиков на Facebook, которое, по-видимому, препятствует неявной / автоматической публикации. Предупреждение пользователю отображается, если приложение не было просмотрено.

редактировать


Перед использованием ShareApi, сначала проверьте, есть ли у приложения необходимые разрешения:

private boolean hasPublishPermission() {
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    return accessToken != null && accessToken.getPermissions().contains("publish_actions");
}

Если нет, выполните код ниже, чтобы запросить разрешение:

LoginManager.getInstance().logInWithPublishPermissions(
          this, Arrays.asList("publish_actions"));

Если вы используете ShareApi без надлежащего разрешения, он потерпит неудачу и onError(FacebookException) будет вызван метод, если вы передали FacebookCallback ShareApi,