Skip to content

Commit 6caf6ab

Browse files
PlayFab SDK TeamPlayFab SDK Team
PlayFab SDK Team
authored and
PlayFab SDK Team
committed
https://docs.microsoft.com/en-us/gaming/playfab/release-notes/#250428
2 parents f36e823 + 122ace8 commit 6caf6ab

25 files changed

+1499
-35
lines changed

PlayFabSDK/source/PlayFabAdminModels.cs

+14-3
Original file line numberDiff line numberDiff line change
@@ -2487,7 +2487,6 @@ public enum GenericErrorCodes
24872487
UnableToConnectToDatabase,
24882488
InternalServerError,
24892489
InvalidReportDate,
2490-
ReportNotAvailable,
24912490
DatabaseThroughputExceeded,
24922491
InvalidGameTicket,
24932492
ExpiredGameTicket,
@@ -2972,6 +2971,11 @@ public enum GenericErrorCodes
29722971
VersionIncrementRateExceeded,
29732972
InvalidSteamUsername,
29742973
InvalidVersionResetForLinkedLeaderboard,
2974+
BattleNetNotEnabledForTitle,
2975+
ReportNotProcessed,
2976+
DataNotAvailable,
2977+
InvalidReportName,
2978+
ResourceNotModified,
29752979
MatchmakingEntityInvalid,
29762980
MatchmakingPlayerAttributesInvalid,
29772981
MatchmakingQueueNotFound,
@@ -3251,6 +3255,7 @@ public enum GenericErrorCodes
32513255
TrueSkillScenarioContainsActiveModel,
32523256
TrueSkillInvalidConditionRank,
32533257
TrueSkillTotalScenarioLimitExceeded,
3258+
TrueSkillInvalidConditionsList,
32543259
GameSaveManifestNotFound,
32553260
GameSaveManifestVersionAlreadyExists,
32563261
GameSaveConflictUpdatingManifest,
@@ -3272,14 +3277,19 @@ public enum GenericErrorCodes
32723277
GameSaveTitleDoesNotExist,
32733278
GameSaveOperationNotAllowedForTitle,
32743279
GameSaveManifestFilesLimitExceeded,
3280+
GameSaveManifestDescriptionUpdateNotAllowed,
3281+
GameSaveTitleConfigNotFound,
3282+
GameSaveTitleAlreadyOnboarded,
32753283
StateShareForbidden,
32763284
StateShareTitleNotInFlight,
32773285
StateShareStateNotFound,
32783286
StateShareLinkNotFound,
32793287
StateShareStateRedemptionLimitExceeded,
32803288
StateShareStateRedemptionLimitNotUpdated,
32813289
StateShareCreatedStatesLimitExceeded,
3282-
StateShareIdMissingOrMalformed
3290+
StateShareIdMissingOrMalformed,
3291+
PlayerCreationDisabled,
3292+
AccountAlreadyExists
32833293
}
32843294

32853295
public class GetActionsOnPlayersInSegmentTaskInstanceResult : PlayFabResultCommon
@@ -4870,7 +4880,8 @@ public enum LoginIdentityProvider
48704880
NintendoSwitchAccount,
48714881
GooglePlayGames,
48724882
XboxMobileStore,
4873-
King
4883+
King,
4884+
BattleNet
48744885
}
48754886

48764887
public class LogStatement

PlayFabSDK/source/PlayFabAuthenticationModels.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,8 @@ public enum LoginIdentityProvider
207207
NintendoSwitchAccount,
208208
GooglePlayGames,
209209
XboxMobileStore,
210-
King
210+
King,
211+
BattleNet
211212
}
212213

213214
/// <summary>

PlayFabSDK/source/PlayFabClientAPI.cs

+111
Original file line numberDiff line numberDiff line change
@@ -1315,6 +1315,33 @@ public static async Task<PlayFabResult<GetPlayerTradesResponse>> GetPlayerTrades
13151315
return new PlayFabResult<GetPlayerTradesResponse> { Result = result, CustomData = customData };
13161316
}
13171317

1318+
/// <summary>
1319+
/// Retrieves the unique PlayFab identifiers for the given set of Battle.net account identifiers.
1320+
/// </summary>
1321+
public static async Task<PlayFabResult<GetPlayFabIDsFromBattleNetAccountIdsResult>> GetPlayFabIDsFromBattleNetAccountIdsAsync(GetPlayFabIDsFromBattleNetAccountIdsRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
1322+
{
1323+
await new PlayFabUtil.SynchronizationContextRemover();
1324+
1325+
var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
1326+
var requestSettings = PlayFabSettings.staticSettings;
1327+
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");
1328+
1329+
1330+
var httpResult = await PlayFabHttp.DoPost("/Client/GetPlayFabIDsFromBattleNetAccountIds", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders);
1331+
if (httpResult is PlayFabError)
1332+
{
1333+
var error = (PlayFabError)httpResult;
1334+
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
1335+
return new PlayFabResult<GetPlayFabIDsFromBattleNetAccountIdsResult> { Error = error, CustomData = customData };
1336+
}
1337+
1338+
var resultRawJson = (string)httpResult;
1339+
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<GetPlayFabIDsFromBattleNetAccountIdsResult>>(resultRawJson);
1340+
var result = resultData.data;
1341+
1342+
return new PlayFabResult<GetPlayFabIDsFromBattleNetAccountIdsResult> { Result = result, CustomData = customData };
1343+
}
1344+
13181345
/// <summary>
13191346
/// Retrieves the unique PlayFab identifiers for the given set of Facebook identifiers.
13201347
/// </summary>
@@ -2198,6 +2225,33 @@ public static async Task<PlayFabResult<EmptyResult>> LinkAppleAsync(LinkAppleReq
21982225
return new PlayFabResult<EmptyResult> { Result = result, CustomData = customData };
21992226
}
22002227

2228+
/// <summary>
2229+
/// Links the Battle.net account associated with the token to the user's PlayFab account.
2230+
/// </summary>
2231+
public static async Task<PlayFabResult<EmptyResponse>> LinkBattleNetAsync(LinkBattleNetRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
2232+
{
2233+
await new PlayFabUtil.SynchronizationContextRemover();
2234+
2235+
var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
2236+
var requestSettings = PlayFabSettings.staticSettings;
2237+
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");
2238+
2239+
2240+
var httpResult = await PlayFabHttp.DoPost("/Client/LinkBattleNet", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders);
2241+
if (httpResult is PlayFabError)
2242+
{
2243+
var error = (PlayFabError)httpResult;
2244+
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
2245+
return new PlayFabResult<EmptyResponse> { Error = error, CustomData = customData };
2246+
}
2247+
2248+
var resultRawJson = (string)httpResult;
2249+
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<EmptyResponse>>(resultRawJson);
2250+
var result = resultData.data;
2251+
2252+
return new PlayFabResult<EmptyResponse> { Result = result, CustomData = customData };
2253+
}
2254+
22012255
/// <summary>
22022256
/// Links the custom identifier, generated by the title, to the user's PlayFab account
22032257
/// </summary>
@@ -2696,6 +2750,36 @@ public static async Task<PlayFabResult<LoginResult>> LoginWithAppleAsync(LoginWi
26962750
return new PlayFabResult<LoginResult> { Result = result, CustomData = customData };
26972751
}
26982752

2753+
/// <summary>
2754+
/// Sign in the user with a Battle.net identity token
2755+
/// </summary>
2756+
public static async Task<PlayFabResult<LoginResult>> LoginWithBattleNetAsync(LoginWithBattleNetRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
2757+
{
2758+
await new PlayFabUtil.SynchronizationContextRemover();
2759+
2760+
var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
2761+
var requestSettings = PlayFabSettings.staticSettings;
2762+
if (request != null) request.TitleId = request?.TitleId ?? requestSettings.TitleId;
2763+
if (request.TitleId == null) throw new PlayFabException(PlayFabExceptionCode.TitleNotSet, "TitleId must be set in your local or global settings to call this method");
2764+
2765+
2766+
var httpResult = await PlayFabHttp.DoPost("/Client/LoginWithBattleNet", request, null, null, extraHeaders);
2767+
if (httpResult is PlayFabError)
2768+
{
2769+
var error = (PlayFabError)httpResult;
2770+
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
2771+
return new PlayFabResult<LoginResult> { Error = error, CustomData = customData };
2772+
}
2773+
2774+
var resultRawJson = (string)httpResult;
2775+
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<LoginResult>>(resultRawJson);
2776+
var result = resultData.data;
2777+
result.AuthenticationContext = new PlayFabAuthenticationContext(result.SessionTicket, result.EntityToken.EntityToken, result.PlayFabId, result.EntityToken.Entity.Id, result.EntityToken.Entity.Type);
2778+
PlayFabSettings.staticPlayer.CopyFrom(result.AuthenticationContext);
2779+
2780+
return new PlayFabResult<LoginResult> { Result = result, CustomData = customData };
2781+
}
2782+
26992783
/// <summary>
27002784
/// Signs the user in using a custom unique identifier generated by the title, returning a session identifier that can
27012785
/// subsequently be used for API calls which require an authenticated user
@@ -3866,6 +3950,33 @@ public static async Task<PlayFabResult<EmptyResponse>> UnlinkAppleAsync(UnlinkAp
38663950
return new PlayFabResult<EmptyResponse> { Result = result, CustomData = customData };
38673951
}
38683952

3953+
/// <summary>
3954+
/// Unlinks the related Battle.net account from the user's PlayFab account.
3955+
/// </summary>
3956+
public static async Task<PlayFabResult<EmptyResponse>> UnlinkBattleNetAsync(UnlinkBattleNetRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
3957+
{
3958+
await new PlayFabUtil.SynchronizationContextRemover();
3959+
3960+
var requestContext = request?.AuthenticationContext ?? PlayFabSettings.staticPlayer;
3961+
var requestSettings = PlayFabSettings.staticSettings;
3962+
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");
3963+
3964+
3965+
var httpResult = await PlayFabHttp.DoPost("/Client/UnlinkBattleNet", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders);
3966+
if (httpResult is PlayFabError)
3967+
{
3968+
var error = (PlayFabError)httpResult;
3969+
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
3970+
return new PlayFabResult<EmptyResponse> { Error = error, CustomData = customData };
3971+
}
3972+
3973+
var resultRawJson = (string)httpResult;
3974+
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<EmptyResponse>>(resultRawJson);
3975+
var result = resultData.data;
3976+
3977+
return new PlayFabResult<EmptyResponse> { Result = result, CustomData = customData };
3978+
}
3979+
38693980
/// <summary>
38703981
/// Unlinks the related custom identifier from the user's PlayFab account
38713982
/// </summary>

PlayFabSDK/source/PlayFabClientInstanceAPI.cs

+107
Original file line numberDiff line numberDiff line change
@@ -1294,6 +1294,32 @@ public async Task<PlayFabResult<GetPlayerTradesResponse>> GetPlayerTradesAsync(G
12941294
return new PlayFabResult<GetPlayerTradesResponse> { Result = result, CustomData = customData };
12951295
}
12961296

1297+
/// <summary>
1298+
/// Retrieves the unique PlayFab identifiers for the given set of Battle.net account identifiers.
1299+
/// </summary>
1300+
public async Task<PlayFabResult<GetPlayFabIDsFromBattleNetAccountIdsResult>> GetPlayFabIDsFromBattleNetAccountIdsAsync(GetPlayFabIDsFromBattleNetAccountIdsRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
1301+
{
1302+
await new PlayFabUtil.SynchronizationContextRemover();
1303+
1304+
var requestContext = request?.AuthenticationContext ?? authenticationContext;
1305+
var requestSettings = apiSettings ?? PlayFabSettings.staticSettings;
1306+
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");
1307+
1308+
var httpResult = await PlayFabHttp.DoPost("/Client/GetPlayFabIDsFromBattleNetAccountIds", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders, requestSettings);
1309+
if (httpResult is PlayFabError)
1310+
{
1311+
var error = (PlayFabError)httpResult;
1312+
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
1313+
return new PlayFabResult<GetPlayFabIDsFromBattleNetAccountIdsResult> { Error = error, CustomData = customData };
1314+
}
1315+
1316+
var resultRawJson = (string)httpResult;
1317+
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<GetPlayFabIDsFromBattleNetAccountIdsResult>>(resultRawJson);
1318+
var result = resultData.data;
1319+
1320+
return new PlayFabResult<GetPlayFabIDsFromBattleNetAccountIdsResult> { Result = result, CustomData = customData };
1321+
}
1322+
12971323
/// <summary>
12981324
/// Retrieves the unique PlayFab identifiers for the given set of Facebook identifiers.
12991325
/// </summary>
@@ -2145,6 +2171,32 @@ public async Task<PlayFabResult<EmptyResult>> LinkAppleAsync(LinkAppleRequest re
21452171
return new PlayFabResult<EmptyResult> { Result = result, CustomData = customData };
21462172
}
21472173

2174+
/// <summary>
2175+
/// Links the Battle.net account associated with the token to the user's PlayFab account.
2176+
/// </summary>
2177+
public async Task<PlayFabResult<EmptyResponse>> LinkBattleNetAsync(LinkBattleNetRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
2178+
{
2179+
await new PlayFabUtil.SynchronizationContextRemover();
2180+
2181+
var requestContext = request?.AuthenticationContext ?? authenticationContext;
2182+
var requestSettings = apiSettings ?? PlayFabSettings.staticSettings;
2183+
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");
2184+
2185+
var httpResult = await PlayFabHttp.DoPost("/Client/LinkBattleNet", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders, requestSettings);
2186+
if (httpResult is PlayFabError)
2187+
{
2188+
var error = (PlayFabError)httpResult;
2189+
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
2190+
return new PlayFabResult<EmptyResponse> { Error = error, CustomData = customData };
2191+
}
2192+
2193+
var resultRawJson = (string)httpResult;
2194+
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<EmptyResponse>>(resultRawJson);
2195+
var result = resultData.data;
2196+
2197+
return new PlayFabResult<EmptyResponse> { Result = result, CustomData = customData };
2198+
}
2199+
21482200
/// <summary>
21492201
/// Links the custom identifier, generated by the title, to the user's PlayFab account
21502202
/// </summary>
@@ -2625,6 +2677,35 @@ public async Task<PlayFabResult<LoginResult>> LoginWithAppleAsync(LoginWithApple
26252677
return new PlayFabResult<LoginResult> { Result = result, CustomData = customData };
26262678
}
26272679

2680+
/// <summary>
2681+
/// Sign in the user with a Battle.net identity token
2682+
/// </summary>
2683+
public async Task<PlayFabResult<LoginResult>> LoginWithBattleNetAsync(LoginWithBattleNetRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
2684+
{
2685+
await new PlayFabUtil.SynchronizationContextRemover();
2686+
2687+
var requestContext = request?.AuthenticationContext ?? authenticationContext;
2688+
var requestSettings = apiSettings ?? PlayFabSettings.staticSettings;
2689+
if (request != null) request.TitleId = request?.TitleId ?? requestSettings.TitleId;
2690+
if (request.TitleId == null) throw new PlayFabException(PlayFabExceptionCode.TitleNotSet, "TitleId must be set in your local or global settings to call this method");
2691+
2692+
var httpResult = await PlayFabHttp.DoPost("/Client/LoginWithBattleNet", request, null, null, extraHeaders, requestSettings);
2693+
if (httpResult is PlayFabError)
2694+
{
2695+
var error = (PlayFabError)httpResult;
2696+
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
2697+
return new PlayFabResult<LoginResult> { Error = error, CustomData = customData };
2698+
}
2699+
2700+
var resultRawJson = (string)httpResult;
2701+
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<LoginResult>>(resultRawJson);
2702+
var result = resultData.data;
2703+
result.AuthenticationContext = new PlayFabAuthenticationContext(result.SessionTicket, result.EntityToken.EntityToken, result.PlayFabId, result.EntityToken.Entity.Id, result.EntityToken.Entity.Type);
2704+
authenticationContext.CopyFrom(result.AuthenticationContext);
2705+
2706+
return new PlayFabResult<LoginResult> { Result = result, CustomData = customData };
2707+
}
2708+
26282709
/// <summary>
26292710
/// Signs the user in using a custom unique identifier generated by the title, returning a session identifier that can
26302711
/// subsequently be used for API calls which require an authenticated user
@@ -3755,6 +3836,32 @@ public async Task<PlayFabResult<EmptyResponse>> UnlinkAppleAsync(UnlinkAppleRequ
37553836
return new PlayFabResult<EmptyResponse> { Result = result, CustomData = customData };
37563837
}
37573838

3839+
/// <summary>
3840+
/// Unlinks the related Battle.net account from the user's PlayFab account.
3841+
/// </summary>
3842+
public async Task<PlayFabResult<EmptyResponse>> UnlinkBattleNetAsync(UnlinkBattleNetRequest request, object customData = null, Dictionary<string, string> extraHeaders = null)
3843+
{
3844+
await new PlayFabUtil.SynchronizationContextRemover();
3845+
3846+
var requestContext = request?.AuthenticationContext ?? authenticationContext;
3847+
var requestSettings = apiSettings ?? PlayFabSettings.staticSettings;
3848+
if (requestContext.ClientSessionTicket == null) throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");
3849+
3850+
var httpResult = await PlayFabHttp.DoPost("/Client/UnlinkBattleNet", request, "X-Authorization", requestContext.ClientSessionTicket, extraHeaders, requestSettings);
3851+
if (httpResult is PlayFabError)
3852+
{
3853+
var error = (PlayFabError)httpResult;
3854+
PlayFabSettings.GlobalErrorHandler?.Invoke(error);
3855+
return new PlayFabResult<EmptyResponse> { Error = error, CustomData = customData };
3856+
}
3857+
3858+
var resultRawJson = (string)httpResult;
3859+
var resultData = PluginManager.GetPlugin<ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject<PlayFabJsonSuccess<EmptyResponse>>(resultRawJson);
3860+
var result = resultData.data;
3861+
3862+
return new PlayFabResult<EmptyResponse> { Result = result, CustomData = customData };
3863+
}
3864+
37583865
/// <summary>
37593866
/// Unlinks the related custom identifier from the user's PlayFab account
37603867
/// </summary>

0 commit comments

Comments
 (0)