#authentication #microsoft-teams
Вопрос:
Я получаю следующую ошибку, когда выполняю проверку подлинности в командах Microsoft. Вызов getContext никогда не возвращается при вызове. Обратите внимание, что эта страница открывается во всплывающем окне при вызове с помощью приведенного ниже кода. Все это прекрасно работает при запуске в браузере, но не работает в настольном приложении.
Открывает всплывающее окно авторизации:
function getToken() {
return new Promise((resolve, reject) => {
microsoftTeams.authentication.authenticate({
url: window.location.origin '/Auth/Start',
width: 600,
height: 535,
successCallback: (result) => {
resolve(result);
},
failureCallback: (reason) => {
$('#loginBtn').show();
console.log('Auth/Start failed for ' reason);
reject(reason);
},
});
});
}
Код в AuthStart:
microsoftTeams.initialize();
// Get the tab context, and use the information to navigate to Azure AD login page
microsoftTeams.getContext(function (context) {
// Generate random state string and store it, so we can verify it in the callback
const state = '@ViewBag.State';
localStorage.setItem("simple.state", state);
localStorage.removeItem("simple.error");
// See https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-implicit
// for documentation on these query parameters
let queryParams = {
client_id: clientId,
response_type: "id_token token",
response_mode: "fragment",
scope: '@ViewBag.GraphApiScopes',
redirect_uri: window.location.origin "/Auth/End",
nonce: '@ViewBag.Nonce',
state: state,
// login_hint pre-fills the username/email address field of the sign in page for the user,
// if you know their username ahead of time.
login_hint: context.upn
};
// Go to the AzureAD authorization endpoint
let authorizeEndpoint = "https://login.microsoftonline.com/" context.tid "/oauth2/v2.0/authorize?" toQueryString(queryParams);
window.location.assign(authorizeEndpoint);
});
Ошибка в отладчике:
VM216:1 Неперехваченное исключение DOMException: Заблокирован кадр с исходным кодом «https://mgr360dev.azurewebsites.net» от доступа к кадру перекрестного происхождения.
при оценке (оценка в d (https://statics.teams.cdn.office.net/sdk/v1.9.0/js/MicrosoftTeams.min.js:1:38246), :1:36)
в объекте.d [как инициализировать] (https://statics.teams.cdn.office.net/sdk/v1.9.0/js/MicrosoftTeams.min.js:1:38246)
в https://mgr360dev.azurewebsites.net/Auth/Start:15:28
Комментарии:
1. Оказывается, ошибка перекрестного происхождения не является проблемой. В принципе, любой звонок в Microsoft, который я делаю, не работает. Я удалил все вызовы в Auth/Start для команд Microsoft, успешно прошел аутентификацию, а затем вернулся в AuthEnd. Просто вызов microsoftTeams.authentication.notifySuccess вернет ошибку CancelledByUser. Это происходит только в настольном приложении, которое терпит неудачу. В Chrome и Edge это работает нормально. Если я нажму на всплывающую стрелку полного окна, то она также будет работать с рабочего стола. Не уверен, что является причиной этого.
2. Брэд — Не могли бы вы, пожалуйста, попробовать с последним пакетом: statics.teams.cdn.office.net/sdk/v1.10.0/js/… Дайте нам знать, если у вас все еще возникнут какие-либо проблемы.
3. Поэтому я попробовал это сделать, но все равно ничего не вышло. Однако проблема, похоже, решается сама собой случайным образом. Возможно, когда я перезагружаю компьютер, что-то проясняется, но обычно это устраняет эту проблему. Обратите внимание, что обычно это происходит, когда я переключаю вошедшего в систему пользователя. Прямо сейчас, похоже, он работает без изменений кода.
Ответ №1:
Перемещение ответа из раздела комментариев:
Проблема, похоже, решается случайным образом, когда пользователь перезагружает свой компьютер. Обычно это происходит, когда пользователь переключает вошедшего в систему пользователя.