Apache Cordova 응용 프로그램의 공유 목록에 항목을 추가하려고합니다. 먼저 사용자에게 로그인하라는 메시지를 표시 한 다음 데이터 입력에 HTTP Post를 작성합니다.Promise가 완료되기 전에 메서드가 호출됩니다.
나는 다음과 같은 코드가 있습니다 :
function saveToSharepoint(data) {
var authority = "https://login.microsoftonline.com/common/";
var authContext = new Microsoft.ADAL.AuthenticationContext(authority);
var authResult = authContext.acquireTokenAsync("https://my.sharepoint.com", "4be098f8-2184-4831-9ef7-3d17dbbef6a0", "http://localhost:4400/services/office365/redirectTarget.html")
.then(FormatAndUpload(authResult, data), errorCallback);
}
function FormatAndUpload(authResponse, data) {
var token = authResponse.accessToken;
var expiry = authResponse.expiresOn;
console.log("Token acquired: " + authResponse.accessToken);
console.log("Token will expire on: " + authResponse.expiresOn);
$.ajax({
url: "https://my.sharepoint.com/_api/web/lists/getbytitle('" + Test + "')/items",
type: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(data),
headers: {
"Accept": "application/json;odata=verbose",
"Authoriztion":"Bearer " + token
},
success: function (data) {
success(data);
},
error: function (data) {
failure(data);
}
});
}
오전 데 문제가 acquireTokenAsync가 완료되기 전에 FormatAndUpload 메서드가 호출되고 있음을, 그래서 FormatAndUpload 방법에 전달 된 authResponse 변수가 null입니다.
Javascript/JQuery의 약속 프레임 워크에 익숙하지 않지만 이벤트가 이전 메서드 완료시에만 발생해야한다는 인상하에있었습니다.
POST를 시도하기 전에 로그인이 완료 될 때까지 기다릴 수있는 방법에 대한 지침이있는 사람이 있습니까?