Intereting Posts
Android: как рисовать маршруты маршрутов Google Maps API V2 от текущего местоположения до пункта назначения Какую среду мобильного программирования вы рекомендуете для запуска? Расширение класса для деятельности Удаление меток точек из линейной диаграммы с использованием библиотеки MPAndroidChart Масштабировать изображения в андроиде относительно ширины экрана Как перебросить исключение Каков эквивалент жизненного цикла активности в iOS? Есть ли Android-устройство с разрешением 640×960? Как указать путь библиотек в файле Android.mk или файле Application.mk? Как открыть приложение «Календарь» в определенном календаре «Невозможно выполнить это действие после onSaveInstanceState» – почему я получаю это исключение из метода onResume моей активности? Что означает блокировка WAIT_FOR_CONCURRENT_GC? Обратный вызов загрузки изображения Picasso Обтекание Textview вокруг View Можно удалить Тень значков (элементов) на карте google?

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

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

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

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

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

Spotify magic

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

То, что вы видели на 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 кэширует токен.