Transfer of an App with Sign in with Apple Functionality

Hello, I currently have an app that includes the "Sign in with Apple" feature, and I need to transfer this app to another app team. I have reviewed all official documentation but have not found the answer I need. My situation has some specificities, and I hope to receive assistance. The .p8 key created by the original developer team has been lost, and the app’s backend does not use a .p8 key for verification—instead, it verifies by obtaining Apple’s public key. However, according to the official documentation I reviewed, obtaining a transfer identifier during the app transfer process requires a client_secret generated from the original team’s .p8 key. This has left us facing a challenge, and we have two potential approaches to address this issue: Q1: During the transfer, is it possible to skip obtaining the transfer identifier and proceed directly with the app transfer, without performing any backend operations? Is this approach feasible? Q2: If the above approach is not feasible, should we create a new .p8 key in the original team’s account and use this new key for the transfer? If a new key is generated, do we need to re-release a new version of the app before initiating the transfer? If neither of the above approaches is feasible, are there better solutions to resolve our issue? I hope to receive a response. Thank you.

TN3159: Migrating Sign in with Apple users for an app transfer | Apple Developer Documentation/ https://developer.apple.com/documentation/signinwithapple/transferring-your-apps-and-users-to-another-team

Answered by DTS Engineer in 892056022

Hi @LeeMd,

You wrote:

Q1: During the transfer, is it possible to skip obtaining the transfer identifier and proceed directly with the app transfer, without performing any backend operations? Is this approach feasible?

If you do not correct migration your users by generating and exchanging your transfer IDs, the user accounts created before the app transfer will be abandoned. This is a poor user experience.

Then, you wrote:

Q2: If the above approach is not feasible, should we create a new .p8 key in the original team’s account and use this new key for the transfer? If a new key is generated, do we need to re-release a new version of the app before initiating the transfer? If neither of the above approaches is feasible, are there better solutions to resolve our issue?

Yes, you should create a new private key for Sign in with Apple on Team A before the app transfer.

You can create 2 private keys, and both can be active simultaneously. First, generate the new key in the Developer portal, test your backend and validation implementations, deploy to production, and only after confirming a healthy transition, purge the old key from your systems and revoke from the Developer portal.

Once you've confident the new private key is handled correctly, you can then revoke the lost private key. You may then use the new private key ID in your client secrets to obtain auth tokens, and generate transfer IDs, and then finally transfer the app as noted in TN3159.

Note: This process should have been done as soon as the original key was compromised.

Cheers,

Paris X Pinkney |  WWDR | DTS Engineer

Hi @LeeMd,

You wrote:

Q1: During the transfer, is it possible to skip obtaining the transfer identifier and proceed directly with the app transfer, without performing any backend operations? Is this approach feasible?

If you do not correct migration your users by generating and exchanging your transfer IDs, the user accounts created before the app transfer will be abandoned. This is a poor user experience.

Then, you wrote:

Q2: If the above approach is not feasible, should we create a new .p8 key in the original team’s account and use this new key for the transfer? If a new key is generated, do we need to re-release a new version of the app before initiating the transfer? If neither of the above approaches is feasible, are there better solutions to resolve our issue?

Yes, you should create a new private key for Sign in with Apple on Team A before the app transfer.

You can create 2 private keys, and both can be active simultaneously. First, generate the new key in the Developer portal, test your backend and validation implementations, deploy to production, and only after confirming a healthy transition, purge the old key from your systems and revoke from the Developer portal.

Once you've confident the new private key is handled correctly, you can then revoke the lost private key. You may then use the new private key ID in your client secrets to obtain auth tokens, and generate transfer IDs, and then finally transfer the app as noted in TN3159.

Note: This process should have been done as soon as the original key was compromised.

Cheers,

Paris X Pinkney |  WWDR | DTS Engineer

@DTS Engineer

I’m experiencing a similar issue. Thank you for the clarification. Our situation is different from the original question because the app transfer has already been completed and accepted by the recipient team.

Before initiating the transfer, we did not prepare the Sign in with Apple user migration or generate transfer identifiers for our existing users. We would like to understand what recovery options are available now.

Our current situation is as follows:

  • The recipient team has accepted the app transfer but has not yet released an updated version on the App Store.
  • The production server, database, API domain, app Bundle ID, and existing application accounts remain unchanged.
  • We had never created a Sign in with Apple private key for this app under the transferring team. The key was not lost or revoked; it was never created.
  • The transferred App ID is no longer available in the transferring team’s developer account. Therefore, we cannot select it as the primary App ID when configuring a new Sign in with Apple key.

We understand that the documented process requires the transferring team’s credentials to generate transfer identifiers. However, we are now blocked because we do not have a pre-existing private key and cannot select the transferred App ID to configure a new one.

Could you please clarify the following?

  1. How can we complete user migration after the app transfer has already been completed?

Since we did not prepare user migration before initiating the transfer, what is the supported procedure for completing it now?

  1. Can a key associated with another primary App ID be used for this migration?

Can we create a Sign in with Apple key under the transferring team, associate it with a different primary App ID that still belongs to that team, and use it to generate migration credentials for the transferred app?

In that case, we would keep the transferred app’s original Bundle ID as both the request’s client_id and the client secret’s sub claim.

  1. If that is not supported, how can we obtain valid transferring-team credentials?

Is there a supported way to create the necessary credentials after the App ID has been transferred, or does this require assistance from Apple Developer Support?

  1. Is there a recovery procedure that does not require transferring the app back?

If we are still within the 60-day migration period, can we resolve this without transferring the app back to the original team? If transferring it back is necessary, could you confirm the correct sequence of steps?

We would appreciate guidance on preserving existing users’ access to their original application accounts before making any further changes to the app’s ownership or account bindings.

Thank you.

Hi @sylvanas_,

You wrote:

We understand that the documented process requires the transferring team’s credentials to generate transfer identifiers. However, we are now blocked because we do not have a pre-existing private key and cannot select the transferred App ID to configure a new one.

The private keys for Sign in with Apple are associated with both a Team ID and a primary App ID. However, you may create a new private key with another existing app to unblock your user migration after the app transfer. Create a private key for a different app your team, then within 60 days of the completed app transfer, you can continue to use the private key to generate and validate access tokens, transfer IDs, and client secrets, while completing your user migration.

If this does not work for you, please let me know.

Cheers,

Paris X Pinkney |  WWDR | DTS Engineer