Intereting Posts
Android, setVisbility не работает в RelativeLayout Android: быстрое нажатие кнопок приводит к нескольким случаям намерений Изменение цвета фона активированного списка элементов на сотах Как продвигать / открывать приложение из результатов поиска в поисковой системе Google? Как создать и сохранить настройки в corona sdk? Как и где указать omx-декодер поддерживает туннелирование Распознавание активности не работает после того, как «Wi-Fi и местоположение мобильной сети» выключится и включится Android-sdk / tools / ant / build.xml: 698: null: 1 IllegalArgumentException с помощью Mockito Как вы можете настроить мягкую клавиатуру EditText для использования номеров вначале, но все же разрешить текст? MvvmCross – попытка использования фрагментов И последняя поддержка lib приводит к связыванию проблем Доступ к базе данных в Android Как выполнить какой-то код в асинхронном потоке Android UI? Android.support.v4.widget.CircleImageView не работает Как разместить гиперссылку на сайт в Android-приложении?

Получить чтение и публикацию разрешений в одном запросе

Прежде чем вы все скажете, что это невозможно, откройте приложение Spotify и нажмите кнопку с кнопкой Facebook.

Мне интересно, как они это сделали, и как я могу получить «publish_stream» и базовые разрешения / электронную почту в одном запросе.

Кроме того, возможно ли возобновить сеанс Facebook с помощью SDK Facebook, если у меня есть определенная информация с последнего сеанса (в последний раз, когда они использовали приложение)?

РЕДАКТИРОВАТЬ- СРЕДНЕСРОЧНЫЕ НИЖЕ ДЛЯ МУЗЫКАЛЬНОГО АВЕРТА

Spotify magic

То, что вы видели на Spotify, не является результатом publish_stream Что они использовали, это Open Graph

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


Редактирование Объяснение : Проверьте разрешения Open Graph

Пример активности:

 public class MainActivity extends Activity implements StatusCallback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); OpenRequest open = new OpenRequest(this); open.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO); open.setPermissions(Arrays.asList(new String[]{"email", "publish_actions", "user_birthday", "user_hometown"})); open.setCallback(this); Session s = new Session(this); s.openForPublish(open); } @Override public void call(Session session, SessionState state, Exception exception) { } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(Session.getActiveSession()!=null) Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); } } 

Это действие покажет это (если пользователь не вошел в систему):

Введите описание изображения здесь

В моем приложении я создал экземпляр для OpenRequest, и я установил для него разрешения.

 Session currentSession = Session.getActiveSession(); if (currentSession == null || currentSession.getState().isClosed()) { Session session = new Session.Builder(context).build(); Session.setActiveSession(session); currentSession = session; } if (currentSession.isOpened()) { //Do whatever u want. User has logged in } else if(!currentSession.isOpened()) { //Ask for username and password OpenRequest op = new Session.OpenRequest(context); op.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO); op.setCallback(null); List<String> permissions = new ArrayList<String>(); permissions.add("publish_stream"); op.setPermissions(permissions); Session session = new Builder(InvitePartners.this).build(); Session.setActiveSession(session); session.openForPublish(op); } 

Это может быть полезно для вас.

Я просто задал его отдельно в методе onCreate.

  LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton); authButton.setPublishPermissions("publish_actions"); authButton.setFragment(this); Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, Arrays.asList("read_stream")); Session.getActiveSession().requestNewReadPermissions(newPermissionsRequest); 

Перейдите в панель приложений вашего приложения. Затем нажмите «Изменить приложение». Теперь в левой части страницы u появится Permission . Щелкните его. Придет новая страница. Узнать User & Friend Permissions: поле. Здесь введите publish_actions . Теперь сохраняйте.

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

Дайте мне знать, что произойдет.

Для всех, кто интересуется второй частью моего вопроса:

Чтобы снова открыть сеанс Facebook с помощью SDK для Facebook, используйте этот код.

 if(Session.openActiveSession(this) == null) { //Haven't logged in yet openSessionForRead(getString(R.string.app_id), Arrays.asList("email")); } 

Facebook кэширует токен.