Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.12.2015, 20:40
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 1  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
По умолчанию Не работает повторный запрос пермишена

Использую следующую js-функцию для определения есть ли пермишен:
Код:
checkPermission: function(permission, success, error) {
    console.log('Checking permissions');
    FB.api('/'+app.user.id+'/permissions', function(r) {
      var res = false;
      for (var i = 0; i < r.data.length; i++) {
        if (r.data[i].permission == permission && r.data[i].status == 'granted') {
          res = true;
          break;
        }
      }
      if (res && success) success();
      else if (!res && error) error();
    });
  }
где:
permission - строка, название пермишена
success -колбэк, дергается если пермишен есть
error - колбэк, дергается если пермишена нет
Собственно когда требуется дернуть некий api, требующий пермишен я делаю:
Код:
checkPermission("user_photos",function() {

// some api calls

},function() {
// т.к. пермишена нет, запрашиваем его повторно

FB.login(function(response) {
//check again if permission is granted
checkPermission("user_photos",function() {

// some api calls

},function() {
// не дали пермишен, показываем диалог с ошибкой
});
},{scope:"user_photos"});
});
Например, для пермишена 'publish_actions' данная логика прекрасно работает. А вот для 'user_photos' если юзер сразу не дал пермишен, повторный вызов
Код:
FB.login(function(response) {..},{scope:"user_photos"});
Приводит к кратковременному появлению диалога с просьбой о пермишене, который сразу после появления немедленно исчезает.В checkPermission после этого вызывается колбэк error.Никто не сталкивался?

Старый 20.12.2015, 20:55
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Не посню уже точно, но там какой-то параметр отвечает за кэш запросов. Или в настройках фейсбука выключается или надо отрпавить. Короче в сторону кэширования запроса копай

Старый 20.12.2015, 21:03
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 3  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Не посню уже точно, но там какой-то параметр отвечает за кэш запросов. Или в настройках фейсбука выключается или надо отрпавить. Короче в сторону кэширования запроса копай
Возможно ты имеешь в виду функцию
FB.getLoginStatus(function(response) {},true|false);
Ей вторым параметром сообщается делать ли новый запрос, либо взять данные из кеша.С её помощью пермишен не запросишь.

Добавлено через 2 минуты
к тому же если бы это был кеш, после перезагрузки он снова спрашивал бы, но такого не наблюдается

Старый 21.12.2015, 07:46
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А ну да, точно, это я и имел в виду.
Ну тогда попробуй к permissions добавить случайный параметр

Старый 21.12.2015, 12:22
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 5  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
Цитата:
Ну тогда попробуй к permissions добавить случайный параметр
ээ, куда конкретно добавить? Все запросы составляются и шлются внутри fb api.
Еще раз
Цитата:
к тому же если бы это был кеш, после перезагрузки он снова спрашивал бы, но такого не наблюдается
Добавлено через 3 часа 53 минуты
Вопрос решился.Оказывается для повторного запроса пермишена надо делать так:
Код:
FB.login(function(response) {...},{scope:'user_photos',auth_type:'rerequest'});


Последний раз редактировалось undefined; 21.12.2015 в 16:15.
Создать новую тему Ответ Часовой пояс GMT +4, время: 00:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:07.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.