Skip to content

Commit

Permalink
https://docs.microsoft.com/en-us/gaming/playfab/release-notes/#210628
Browse files Browse the repository at this point in the history
  • Loading branch information
PlayFabJenkinsBot committed Jun 29, 2021
2 parents add008b + 0f3fd86 commit 7aa70b6
Show file tree
Hide file tree
Showing 39 changed files with 1,054 additions and 1,510 deletions.
36 changes: 9 additions & 27 deletions PlayFabSDK/source/PlayFabAdminModels.cs
Original file line number Diff line number Diff line change
Expand Up @@ -907,7 +907,7 @@ public class ContentInfo
/// <summary>
/// Size of the content in bytes
/// </summary>
public double Size ;
public uint Size ;

}

Expand Down Expand Up @@ -2525,7 +2525,7 @@ public enum GenericErrorCodes
EvaluationModePlayerCountExceeded,
GetPlayersInSegmentRateLimitExceeded,
CloudScriptFunctionNameSizeExceeded,
PaidInsightsFeaturesNotEnabled,
InsightsManagementTitleInEvaluationMode,
CloudScriptAzureFunctionsQueueRequestError,
EvaluationModeTitleCountExceeded,
InsightsManagementTitleNotInFlight,
Expand All @@ -2545,9 +2545,6 @@ public enum GenericErrorCodes
WasNotCreatedWithCloudRoot,
LegacyMultiplayerServersDeprecated,
VirtualCurrencyCurrentlyUnavailable,
SteamUserNotFound,
ElasticSearchOperationFailed,
NotImplemented,
MatchmakingEntityInvalid,
MatchmakingPlayerAttributesInvalid,
MatchmakingQueueNotFound,
Expand All @@ -2572,7 +2569,6 @@ public enum GenericErrorCodes
TitleConfigNotFound,
TitleConfigUpdateConflict,
TitleConfigSerializationError,
CatalogApiNotImplemented,
CatalogEntityInvalid,
CatalogTitleIdMissing,
CatalogPlayerIdMissing,
Expand Down Expand Up @@ -2628,7 +2624,6 @@ public enum GenericErrorCodes
TitleNotEnabledForParty,
PartyVersionNotFound,
MultiplayerServerBuildReferencedByMatchmakingQueue,
MultiplayerServerBuildReferencedByBuildAlias,
ExperimentationExperimentStopped,
ExperimentationExperimentRunning,
ExperimentationExperimentNotFound,
Expand All @@ -2651,7 +2646,6 @@ public enum GenericErrorCodes
ExperimentationExclusionGroupInsufficientCapacity,
ExperimentationExclusionGroupCannotDelete,
ExperimentationExclusionGroupInvalidTrafficAllocation,
ExperimentationExclusionGroupInvalidName,
MaxActionDepthExceeded,
TitleNotOnUpdatedPricingPlan,
SegmentManagementTitleNotInFlight,
Expand All @@ -2665,11 +2659,7 @@ public enum GenericErrorCodes
CreateSegmentRateLimitExceeded,
UpdateSegmentRateLimitExceeded,
GetSegmentsRateLimitExceeded,
AsyncExportNotInFlight,
AsyncExportNotFound,
AsyncExportRateLimitExceeded,
SnapshotNotFound,
InventoryApiNotImplemented
SnapshotNotFound
}

public class GetActionsOnPlayersInSegmentTaskInstanceResult : PlayFabResultCommon
Expand Down Expand Up @@ -3278,11 +3268,6 @@ public class GetPolicyResponse : PlayFabResultCommon
/// </summary>
public string PolicyName ;

/// <summary>
/// Policy version.
/// </summary>
public int PolicyVersion ;

/// <summary>
/// The statements in the requested policy.
/// </summary>
Expand Down Expand Up @@ -4204,6 +4189,11 @@ public class LinkedUserAccountHasEmailSegmentFilter

public class LinkedUserAccountSegmentFilter
{
/// <summary>
/// Login provider comparison.
/// </summary>
public SegmentFilterComparison? Comparison ;

/// <summary>
/// Login provider.
/// </summary>
Expand Down Expand Up @@ -7133,10 +7123,7 @@ public class UpdatePlayerStatisticDefinitionResult : PlayFabResultCommon
/// <summary>
/// Updates permissions for your title. Policies affect what is allowed to happen on your title. Your policy is a collection
/// of statements that, together, govern particular area for your title. Today, the only allowed policy is called
/// 'ApiPolicy' and it governs what API calls are allowed. To verify that you have the latest version always download the
/// current policy from GetPolicy before uploading a new policy. PlayFab updates the base policy periodically and will
/// automatically apply it to the uploaded policy. Overwriting the combined policy blindly may result in unexpected API
/// errors.
/// 'ApiPolicy' and it governs what api calls are allowed.
/// </summary>
public class UpdatePolicyRequest : PlayFabRequestCommon
{
Expand All @@ -7150,11 +7137,6 @@ public class UpdatePolicyRequest : PlayFabRequestCommon
/// </summary>
public string PolicyName ;

/// <summary>
/// Version of the policy to update. Must be the latest (as returned by GetPolicy).
/// </summary>
public int PolicyVersion ;

/// <summary>
/// The new statements to include in the policy.
/// </summary>
Expand Down
182 changes: 146 additions & 36 deletions PlayFabSDK/source/PlayFabClientAPI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -397,34 +397,6 @@ public static async Task<PlayFabResult<ConsumeMicrosoftStoreEntitlementsResponse
return new PlayFabResult<ConsumeMicrosoftStoreEntitlementsResponse> { Result = result, CustomData = customData };
}

/// <summary>
/// Checks for any new PS5 entitlements. If any are found, they are consumed (if they're consumables) and added as PlayFab
/// items
/// </summary>
public static async Task<PlayFabResult<ConsumePS5EntitlementsResult>> ConsumePS5EntitlementsAsync(ConsumePS5EntitlementsRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
{
await new PlayFabUtil.SynchronizationContextRemover();

var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
var requestSettings = PlayFabSettings.staticSettings;
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");


var httpResult = await PlayFabHttp.DoPost("/Client/ConsumePS5Entitlements", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders);
if (httpResult is PlayFabError)
{
var error = (PlayFabError)httpResult;
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
return new PlayFabResult<ConsumePS5EntitlementsResult> { Error = error, CustomData = customData };
}

var resultRawJson = (string)httpResult;
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<ConsumePS5EntitlementsResult>>(resultRawJson);
var result = resultData.data;

return new PlayFabResult<ConsumePS5EntitlementsResult> { Result = result, CustomData = customData };
}

/// <summary>
/// Checks for any new consumable entitlements. If any are found, they are consumed and added as PlayFab items
/// </summary>
Expand Down Expand Up @@ -1994,6 +1966,32 @@ public static async Task<PlayFabResult<GetUserDataResult>> GetUserReadOnlyDataAs
return new PlayFabResult<GetUserDataResult> { Result = result, CustomData = customData };
}

/// <summary>
/// Requests a challenge from the server to be signed by Windows Hello Passport service to authenticate.
/// </summary>
public static async Task<PlayFabResult<GetWindowsHelloChallengeResponse>> GetWindowsHelloChallengeAsync(GetWindowsHelloChallengeRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
{
await new PlayFabUtil.SynchronizationContextRemover();

var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
var requestSettings = PlayFabSettings.staticSettings;


var httpResult = await PlayFabHttp.DoPost("/Client/GetWindowsHelloChallenge", request, null, null, extraHeaders);
if (httpResult is PlayFabError)
{
var error = (PlayFabError)httpResult;
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
return new PlayFabResult<GetWindowsHelloChallengeResponse> { Error = error, CustomData = customData };
}

var resultRawJson = (string)httpResult;
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<GetWindowsHelloChallengeResponse>>(resultRawJson);
var result = resultData.data;

return new PlayFabResult<GetWindowsHelloChallengeResponse> { Result = result, CustomData = customData };
}

/// <summary>
/// Grants the specified character type to the user. CharacterIds are not globally unique; characterId must be evaluated
/// with the parent PlayFabId to guarantee uniqueness.
Expand Down Expand Up @@ -2158,10 +2156,7 @@ public static async Task<PlayFabResult<LinkFacebookInstantGamesIdResult>> LinkFa
}

/// <summary>
/// Links the Game Center account associated with the provided Game Center ID to the user's PlayFab account. Logging in with
/// a Game Center ID is insecure if you do not include the optional PublicKeyUrl, Salt, Signature, and Timestamp parameters
/// in this request. It is recommended you require these parameters on all Game Center calls by going to the Apple Add-ons
/// page in the PlayFab Game Manager and enabling the 'Require secure authentication only for this app' option.
/// Links the Game Center account associated with the provided Game Center ID to the user's PlayFab account
/// </summary>
public static async Task<PlayFabResult<LinkGameCenterAccountResult>> LinkGameCenterAccountAsync(LinkGameCenterAccountRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
{
Expand Down Expand Up @@ -2431,6 +2426,33 @@ public static async Task<PlayFabResult<LinkTwitchAccountResult>> LinkTwitchAsync
return new PlayFabResult<LinkTwitchAccountResult> { Result = result, CustomData = customData };
}

/// <summary>
/// Link Windows Hello authentication to the current PlayFab Account
/// </summary>
public static async Task<PlayFabResult<LinkWindowsHelloAccountResponse>> LinkWindowsHelloAsync(LinkWindowsHelloAccountRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
{
await new PlayFabUtil.SynchronizationContextRemover();

var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
var requestSettings = PlayFabSettings.staticSettings;
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");


var httpResult = await PlayFabHttp.DoPost("/Client/LinkWindowsHello", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders);
if (httpResult is PlayFabError)
{
var error = (PlayFabError)httpResult;
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
return new PlayFabResult<LinkWindowsHelloAccountResponse> { Error = error, CustomData = customData };
}

var resultRawJson = (string)httpResult;
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<LinkWindowsHelloAccountResponse>>(resultRawJson);
var result = resultData.data;

return new PlayFabResult<LinkWindowsHelloAccountResponse> { Result = result, CustomData = customData };
}

/// <summary>
/// Links the Xbox Live account associated with the provided access code to the user's PlayFab account
/// </summary>
Expand Down Expand Up @@ -2647,10 +2669,7 @@ public static async Task<PlayFabResult<LoginResult>> LoginWithFacebookInstantGam

/// <summary>
/// Signs the user in using an iOS Game Center player identifier, returning a session identifier that can subsequently be
/// used for API calls which require an authenticated user. Logging in with a Game Center ID is insecure if you do not
/// include the optional PublicKeyUrl, Salt, Signature, and Timestamp parameters in this request. It is recommended you
/// require these parameters on all Game Center calls by going to the Apple Add-ons page in the PlayFab Game Manager and
/// enabling the 'Require secure authentication only for this app' option.
/// used for API calls which require an authenticated user
/// </summary>
public static async Task<PlayFabResult<LoginResult>> LoginWithGameCenterAsync(LoginWithGameCenterRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
{
Expand Down Expand Up @@ -2987,6 +3006,39 @@ public static async Task<PlayFabResult<LoginResult>> LoginWithTwitchAsync(LoginW
return new PlayFabResult<LoginResult> { Result = result, CustomData = customData };
}

/// <summary>
/// Completes the Windows Hello login flow by returning the signed value of the challange from GetWindowsHelloChallenge.
/// Windows Hello has a 2 step client to server authentication scheme. Step one is to request from the server a challenge
/// string. Step two is to request the user sign the string via Windows Hello and then send the signed value back to the
/// server.
/// </summary>
public static async Task<PlayFabResult<LoginResult>> LoginWithWindowsHelloAsync(LoginWithWindowsHelloRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
{
await new PlayFabUtil.SynchronizationContextRemover();

var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
var requestSettings = PlayFabSettings.staticSettings;
if (request != null) request.TitleId = request?.TitleId ?? requestSettings.TitleId;
if (request.TitleId == null) throw new PlayFabException(PlayFabExceptionCode.TitleNotSet, "TitleId must be set in your local or global settings to call this method");


var httpResult = await PlayFabHttp.DoPost("/Client/LoginWithWindowsHello", request, null, null, extraHeaders);
if (httpResult is PlayFabError)
{
var error = (PlayFabError)httpResult;
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
return new PlayFabResult<LoginResult> { Error = error, CustomData = customData };
}

var resultRawJson = (string)httpResult;
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<LoginResult>>(resultRawJson);
var result = resultData.data;
result.AuthenticationContext = new PlayFabAuthenticationContext(result.SessionTicket, result.EntityToken.EntityToken, result.PlayFabId, result.EntityToken.Entity.Id, result.EntityToken.Entity.Type);
PlayFabSettings.staticPlayer.CopyFrom(result.AuthenticationContext);

return new PlayFabResult<LoginResult> { Result = result, CustomData = customData };
}

/// <summary>
/// Signs the user in using a Xbox Live Token, returning a session identifier that can subsequently be used for API calls
/// which require an authenticated user
Expand Down Expand Up @@ -3245,6 +3297,37 @@ public static async Task<PlayFabResult<RegisterPlayFabUserResult>> RegisterPlayF
return new PlayFabResult<RegisterPlayFabUserResult> { Result = result, CustomData = customData };
}

/// <summary>
/// Registers a new PlayFab user account using Windows Hello authentication, returning a session ticket that can
/// subsequently be used for API calls which require an authenticated user
/// </summary>
public static async Task<PlayFabResult<LoginResult>> RegisterWithWindowsHelloAsync(RegisterWithWindowsHelloRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
{
await new PlayFabUtil.SynchronizationContextRemover();

var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
var requestSettings = PlayFabSettings.staticSettings;
if (request != null) request.TitleId = request?.TitleId ?? requestSettings.TitleId;
if (request.TitleId == null) throw new PlayFabException(PlayFabExceptionCode.TitleNotSet, "TitleId must be set in your local or global settings to call this method");


var httpResult = await PlayFabHttp.DoPost("/Client/RegisterWithWindowsHello", request, null, null, extraHeaders);
if (httpResult is PlayFabError)
{
var error = (PlayFabError)httpResult;
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
return new PlayFabResult<LoginResult> { Error = error, CustomData = customData };
}

var resultRawJson = (string)httpResult;
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<LoginResult>>(resultRawJson);
var result = resultData.data;
result.AuthenticationContext = new PlayFabAuthenticationContext(result.SessionTicket, result.EntityToken.EntityToken, result.PlayFabId, result.EntityToken.Entity.Id, result.EntityToken.Entity.Type);
PlayFabSettings.staticPlayer.CopyFrom(result.AuthenticationContext);

return new PlayFabResult<LoginResult> { Result = result, CustomData = customData };
}

/// <summary>
/// Removes a contact email from the player's profile.
/// </summary>
Expand Down Expand Up @@ -4065,6 +4148,33 @@ public static async Task<PlayFabResult<UnlinkTwitchAccountResult>> UnlinkTwitchA
return new PlayFabResult<UnlinkTwitchAccountResult> { Result = result, CustomData = customData };
}

/// <summary>
/// Unlink Windows Hello authentication from the current PlayFab Account
/// </summary>
public static async Task<PlayFabResult<UnlinkWindowsHelloAccountResponse>> UnlinkWindowsHelloAsync(UnlinkWindowsHelloAccountRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
{
await new PlayFabUtil.SynchronizationContextRemover();

var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
var requestSettings = PlayFabSettings.staticSettings;
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");


var httpResult = await PlayFabHttp.DoPost("/Client/UnlinkWindowsHello", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders);
if (httpResult is PlayFabError)
{
var error = (PlayFabError)httpResult;
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
return new PlayFabResult<UnlinkWindowsHelloAccountResponse> { Error = error, CustomData = customData };
}

var resultRawJson = (string)httpResult;
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<UnlinkWindowsHelloAccountResponse>>(resultRawJson);
var result = resultData.data;

return new PlayFabResult<UnlinkWindowsHelloAccountResponse> { Result = result, CustomData = customData };
}

/// <summary>
/// Unlinks the related Xbox Live account from the user's PlayFab account
/// </summary>
Expand Down
Loading

0 comments on commit 7aa70b6

Please sign in to comment.