2

Я работаю над настройкой, в которой пользователи могут автоматически размещать свои сообщения в своем приложении на Facebook.Правильно запрашивать опубликованные разрешения с помощью Facebook-Android SDK 3.0

Я нашел этот пример: https://github.com/fbsamples/android-3.0-howtos/blob/master/PublishFeedHowTo/src/com/facebook/samples/publishfeedhowto/MainFragment.java

, но, будучи этой функцией является установкой в ​​моем приложении, мне нужно, чтобы выделить «позволяющее разрешение» логику от фактического «делает запрос публиковать», который происходит на другом отдельная деятельность.

На первый взгляд я предположил, что могу вырезать и вставить кусок кода ниже в свою деятельность, и он будет работать, если мой пользователь уже войдет в систему с facebook, но, видимо, мне также нужно реализовать uihelpers и Session.StatusCallback. Какой дополнительный код (кроме логики ниже) мне НЕОБХОДИМО реализовать в моей активности настроек, которая запрашивает разрешения?

private void publishStory() { 
     Session session = Session.getActiveSession(); 
     if (session != null) { 

      // Check for publish permissions  
      List<String> permissions = session.getPermissions(); 
       if (!isSubsetOf(PERMISSIONS, permissions)) { 
        pendingPublishReauthorization = true; 
        Session.NewPermissionsRequest newPermissionsRequest = new Session 
          .NewPermissionsRequest(this, PERMISSIONS); 
        session.requestNewPublishPermissions(newPermissionsRequest); 
        return; 
       } 

     } 
    } 

    private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) { 
     for (String string : subset) { 
      if (!superset.contains(string)) { 
       return false; 
      } 
     } 
     return true; 
    } 

} 
+1

Вам не нужно использовать uiHelpers, я думаю, что все вам нужно, чтобы в вашем коде было добавлено Session.Callback для вашего нового Perm issionsRequest делать фактический пост при его вызове (конечно, сделать еще один isSubsetOf проверить ваш обратный вызов, поскольку пользователь мог отклонить ваш запрос). Также не забудьте переопределить метод onActivityResult в вашей активности/фрагменте вызова. –

ответ

2

Как Мин Ли отметил в комментарии, вам не нужно реализовать uihelpers, но вам необходимо следующее дополнение.

Реализовать StatusCallback

Реализовать onActivityResult()

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
} 

Добавьте код, чтобы сделать реальную работу в publishStory()

private void publishStory() { 
    Session session = Session.getActiveSession(); 
    if (session != null) { 

     // Check for publish permissions  
     List<String> permissions = session.getPermissions(); 
      if (!isSubsetOf(PERMISSIONS, permissions)) { 
       pendingPublishReauthorization = true; 
       Session.NewPermissionsRequest newPermissionsRequest = new Session 
         .NewPermissionsRequest(this, PERMISSIONS); 
       session.requestNewPublishPermissions(newPermissionsRequest); 
       return; 
      } 

     // Do the real work here 
     ... 
    } 
} 
+0

Я думаю, мы также должны добавить эту строку: newPermissionsRequest.setCallback (statusCallback); – vida

Смежные вопросы