public static class ExampleFunction { [FunctionName("ExampleFunction")] public static async Task Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { PlayFabSettings.staticSettings.TitleId = "TitleID"; PlayFabSettings.staticSettings.DeveloperSecretKey = Environment.GetEnvironmentVariable("PLAYFAB_DEV_SECRET_KEY", EnvironmentVariableTarget.Process); string response = string.Empty; await GetUserData((data) => { response = data.ToString(); }, log); return new OkObjectResult(response); } private static async System.Threading.Tasks.Task GetUserData(Action context, ILogger log) { PlayFab.ServerModels.GetUserDataRequest request = new PlayFab.ServerModels.GetUserDataRequest { PlayFabId = "TitleID", Keys = new List { "UserDataIWantFromPlayFab" } }; PlayFabResult result = await PlayFab.PlayFabServerAPI.GetUserDataAsync(request); if (result.Error != null) { log.LogInformation(result.Error.GenerateErrorReport()); context(result.CustomData); ///need to send it as a separate response for errors } else { await InitializePlayerProfile((response)=>{ context(response);}); log.LogInformation(result.Result.Data["UserDataIWantFromPlayFab"].Value); ///need to send it as a separate response for data } } private static async System.Threading.Tasks.Task InitializePlayerProfile(Action callback) { PlayerProfile playerProfile = new PlayerProfile(); string data = JsonConvert.SerializeObject(playerProfile); PlayFab.ServerModels.UpdateUserDataRequest request = new PlayFab.ServerModels.UpdateUserDataRequest { Data = new Dictionary { { "UserDataIWantFromPlayFab",data} } }; await PlayFab.PlayFabServerAPI.UpdateUserDataAsync(request); callback(data); } }