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を試行する前に、ログインが完了するまでにどのように正しく待つことができるでしょうか?