2015-07-09 4 views
2

Когда я называю yam.platform.getLoginStatus сразу после регистрации при помощи yam.platform.login (показывает всплывающее окно и т.д.) Я получаю другой объект, передаваемый обратный вызов, чем когда пользователь уже выполнил вход в систему. В частности, поле «пользователь» отсутствует в объекте ответа LoginStatus, в противном случае оно выглядит так же, насколько я могу видеть.yam.platform.getLoginStatus вызывает обратный вызов без response.user

У меня есть следующий контроллер для «входа в систему с Yammer области» на моем угловом приложение:

Когда контроллер создается его уже запрашивает текущее состояние входа с помощью функции refreshLoginStatus. Если пользователь yammer уже зарегистрирован в приложении, отобразится имя пользователя и кнопка выхода на страницу (выполняется с помощью ng-show = "isLoggedIn"). Если пользователь не вошел в систему, вместо него будет отображаться кнопка входа в систему. Когда пользователь нажимает на эту кнопку входа в систему, вызывается функция $scope.login, вызывая yam.platform.login и, в случае успеха, снова вызывает refreshLoginStatus, чтобы получить и установить имя пользователя. В этом случае объект, возвращенный из обоих, login и getLoginStatus, не содержит информации о пользователе, как в сценарии «пользователь уже вошел в систему». Я попытался снова вызвать SDK-API после некоторого таймаута, но, по-видимому, ответ кэширован - я всегда получаю то же самое. Только обновление всей страницы очищает текущий ответ, снова запрашивает статус и получает «полный» объект ответа.

Я думал, что это может быть проблема, но я не уверен, что это проблема в самом SDK. : S

EDIT: Я как бы нашел решение, которое, однако, только усугубляет проблемы. По-видимому, запрос действительно кэшируется. Обновление можно принудительно использовать, используя «принудительное обновление» на yam.platform.getLoginStatus(callback, [forceRefresh]). Это, однако, дает мне следующую ошибку в консоли браузера:

XMLHttpRequest не может загрузить https://www.yammer.com/platform/login_status.json?client_id=2h4U2Hndg5kdWQ8xxxxxx. Нет заголовка «Access-Control-Allow-Origin» на запрашиваемом ресурсе . Origin 'http://localhost:9000' поэтому не разрешено доступ.

В принципе, SDK полностью не получает getLoginStatus и сообщает об этом обратно в мой код как «нет соединения». Я не уверен, что хуже ... или, что я делаю неправильно?

ответ

1

Похоже, что это просто несоответствие в API yam.platform.getLoginStatus или соответствующем вызове Yammer. Если пользователь входит в систему, вы получаете информацию о пользователе, если он включен, вы не получите его. Это просто странно, но, видимо, не может помочь.

Однако я решил эту проблему, просто всегда получая данные входа пользователя с помощью отдельного вызова службы REST на /users/current.json после проверки подлинности сеанса (как только у меня есть токен из getLoginStatus).

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