My team is currently working on integrating PlayFab with our existing application server to support cross-platform play. So far things have been going well, however we hit a snag using Custom Server IDs.
We are adding integrations for account services that are not supported by PlayFab (specifically the Epic Games Store for now, with others expected in the future).
- When a user first starts a game session, we send their Epic authentication token to our server.
- Our server then validates their token against the Epic authentication service, and calls LogInWithServerCustomID, using their Epic Account ID as the Server Custom ID.
- Our server then sends the PlayFab Session Ticket back to the client for later use.
- At this point, the client is correctly authenticated with Epic, and has a valid PlayFab Session Ticket. Our application server can check user entitlements, and establish a socket connection to the client, allowing us to send events during the session.
Here's the issue.
All players essentially have two sets of friends. One managed by their current platform (Epic Game Store, Steam, PlayStation Network, etc), and a cross-platform friends list managed by PlayFab. Their in-game friends list is essentially the union of these two sets. For this approach to work, we need to retrieve their friends' PlayFab IDs using only the Account IDs provided by their current platform. (For example, by using the GetPlayFabIDsFromPSNAccountIDs endpoint).
No such endpoint exists for Server Custom IDs, and their is no other way to retrieve this information besides calling "LogInWithServerCustomID" repeatedly, which is obviously a nonstarter.
How would you recommend we achieve this? Is there an alternative way to create a linked player identity and generate Session Tickets for platforms that are not yet supported by PlayFab?