Posts

Post not yet marked as solved
17 Replies
I am using Firebase to sign in the user via sign in with Apple and handle the authentication for me, so this might not be relevant to everyone facing this issue, but maybe my experience helps you identify your problem as well I was facing the same error. I could reliably sign in every time on my devices and simulators with my Apple ID, but the reviewers kept rejecting my app for this reason. I added an alert if the user's internet connection wasn't strong enough, but still no luck. When I looked at my signed in users on Firebase I saw that the reviewers emails were never captured and I build the user's profile around their unique email address. I was finally able to reproduce the issue the reviewers were reporting by removing my saved authentication user from firebase and on my iPad going to Settings > Password & Security > Sign in with Apple > My App Name > Stop using Apple ID. When I tried to sign in on my app using sign in with Apple I finally got the same issue that the reviewers were reporting: that it would leave them at the sign in screen after completing sign in with Apple successfully. The reason I wasn't able to see it before is because I am building a cross platform app using Flutter and first tested the sign in with apple on my web app, which successfully linked my email to my apple ID on firebase, thereafter signing in with Apple on my iPad always worked because the link was already made. The reason web was working out of the box is because the email scope was automatically added, but it is not automatically added for Apple sign in on an iOS device. So in my Flutter app I had to add: appleProvider.addScope('email'); I had to remove my user again via Settings > Password & Security > Sign in with Apple > My App Name > Stop using Apple ID, before everything was working reliably repeatedly. I realise not everyone is using Flutter with Firebase to build their iOS app, but maybe my situation helps you identify your problem as well. Here is the checklist I would suggest: Make sure your bundle ID has sign in with Apple added Make sure your provisioning profile was regenerated after adding it Make sure you've added the sign in with Apple entitlement to your Entitlements.plist <key>com.apple.developer.applesignin</key> <array> <string>Default</string> </array> Make sure you've added the email scope to sign in with Apple Add an alert when the user's internet connection isn't strong enough You only get the user's email on the first sign in, so if you're not using a service like Firebase that handles storing this info for you, you will need to store it on some other cloud db, remember you must delete this info too when a user deregisters. On subsequent sign ins you only get the identifier and need to pull the email address from where you saved it. Delete your Apple sign account where you're storing the email address or any other info (Firebase auth in my case) and remove Sign in with apple via settings or https://appleid.apple.com/, and register on a real iOS device to get the exact same experience that the reviewers have. Throttle your internet speed to see what the sign in experience looks like on a bad internet connection via Settings > Developer > Network Link Conditioner Hope this helps!