Я создаю новый небольшой проект в таблицах Google, чтобы получить некоторые данные с серверов Playfab для игры в Kongregate. Playfab предоставляет Javascript API для работы:
https://download.playfab.com/PlayFabClientApi.js
Я буду использовать функцию
Но когда я пытаюсь запустить свой первый тест, я получаю сообщение об ошибке:
ReferenceError: "Promise" no está definido. (línea 33, archivo "Código")
После некоторых исследований я понял, что Promise не поддерживается GAS (Google Apps Script), но где-то, где я читал V8, можно использовать обещания ... Я немного растерялся, не могли бы вы немного помочь мне с этой работой?
Мой код в моем проекте:
// Load JavaScript from External Server
var url = "https://download.playfab.com/PlayFabClientApi.js";
var javascript = UrlFetchApp.fetch(url).getContentText();
var token = "1111111111111111111111111111111111111111111111111111111111111111";
var kongID = "1111111";
eval(javascript);
/* ######################################################################## */
/* ######################## MENU FUNCTION ################################# */
/* ######################################################################## */
function onOpen(){
var menu = SpreadsheetApp.getUi().createMenu('PLAYFAB MENU');
menu.addItem('FirstCallPlayfab', 'PlayFabAPICall')
.addToUi();
}
function PlayFabAPICall() {
PlayFab.settings.titleId = "E3FA";
var loginRequest = {
// Currently, you need to look up the correct format for this object in the API-docs:
// https://api.playfab.com/documentation/Client/method/LoginWithCustomID
TitleId: PlayFab.settings.titleId,
AuthTicket: token,
CreateAccount: false,
KongregateId: kongID,
};
PlayFabClientSDK.LoginWithKongregate(loginRequest, LoginCallback);
}
var LoginCallback = function (result, error) {
if (result !== null) {
Logger.log("Congratulations, you made your first successful API call!");
}
else if (error !== null) {
Logger.log("Something went wrong with your first API call.\n" +
"Here's some debug information:\n" +
PlayFab.GenerateErrorReport(error));
}
}
Функция LoginWithKongregate в файле API:
LoginWithKongregate: function (request, callback, customData, extraHeaders) {
request.TitleId = PlayFab.settings.titleId ? PlayFab.settings.titleId : request.TitleId; if (!request.TitleId) throw PlayFab._internalSettings.errorTitleId;
// PlayFab._internalSettings.authenticationContext can be modified by other asynchronous login attempts
// Deep-copy the authenticationContext here to safely update it
var authenticationContext = JSON.parse(JSON.stringify(PlayFab._internalSettings.authenticationContext));
var overloadCallback = function (result, error) {
if (result != null) {
if(result.data.SessionTicket != null) {
PlayFab._internalSettings.sessionTicket = result.data.SessionTicket;
}
if (result.data.EntityToken != null) {
PlayFab._internalSettings.entityToken = result.data.EntityToken.EntityToken;
}
// Apply the updates for the AuthenticationContext returned to the client
authenticationContext = PlayFab._internalSettings.UpdateAuthenticationContext(authenticationContext, result);
PlayFab.ClientApi._MultiStepClientLogin(result.data.SettingsForUser.NeedsAttribution);
}
if (callback != null && typeof (callback) === "function")
callback(result, error);
};
PlayFab._internalSettings.ExecuteRequestWrapper("/Client/LoginWithKongregate", request, null, overloadCallback, customData, extraHeaders);
// Return a Promise so that multiple asynchronous calls to this method can be handled simultaneously with Promise.all()
return new Promise(function(resolve){resolve(authenticationContext);});
},