Apple Sign-In setup on web page - ios

We have an issue with the implementation of the apple sign in on the web page: Apple recenlty changed the guidelines for the usage of the "third-party login service".
Since our app use facebook and google sign-in service, we cannot update the Apple Application on Apple store since we don't offer the sign in with safari.
So we are developing the sign in with apple in the App and on the web page, but we have some trouble during the setup of the service ID.
We have created a new Service ID with a new identifier id, but when we try to enable sign in we see an error "This request is forbidden for security reasons. The bundle '' is not a primary App."
This is quite strange because the bundle is yet enable as primary App.
We have read that someone else also have this problem, by enabling Apple sign in with an existent app.
Is there someone who can help me? Without Apple login we can not upload any new version of the app. We've already written to the apple developer support but they can't help us.
Thanks.
Below 3 screenshot of the Apple setup.

You need to:
Uncheck Sign In with Apple inside your app identifier
Save the identifier
Again go to identifier settings and enable Sign In With Apple
Now you can add Services Identifier using this app bundle

I was finally able to solve this after hearing back from Apple developer support. I had to:
go to the primary app's identifier
go to the identifier's apple sign in configuration
remove the server to server notification url
save the identifier
Then I could create and configure the service identifier without any errors. After I did that, I went back and re-added the server to server notification url and saved the app identifier.

Related

Firebase auth web with apple login

I'm stuck on configuring Apple Login for my web app using Firebase Auth.
I did all the configuration on https://firebase.google.com/docs/auth/web/apple but cant seem to find the apple-developer-domain-association.txt file to download and host on firebase hosting.
Firebase configuration:
Services Id:
- The bundle id on the identifier page
Apple Team Id:
- Full App name
Key Code:
- The key identifier
Secret Key
- Content of key file downloaded from the developers page
With this config I get the invalid_uri on the popup when opened.
Can anyone help?
Thanks in advance.
In addition to Ruaridh's answer, make sure that the "domain" is formatted with OUT the leading "https://"
so just: YOUR_FIREBASE_PROJECT_ID.firebaseapp.com
This may seem obvious to some, but I did not see anything in any documentation that specified the format the domain needed to be in. Even Firebase and Apple support were not able to identify improper formatting as an issue in my case. I came across this solution by accident and still cannot find any official documentation of formatting.
I had been stuck on that for a while, so even if it doesn't solve your issue, hopefully it is valuable to others.
You shouldn't need to host the apple-developer-domain-association.txt on Firebase anymore - I have just implemented Sign in with Apple on a Firebase web app and it wasn't required. Apparently as long as TLS 1.2 is supported (which Firebase handles for you), it should work. Firebase docs seem to be out of date. When configuring your Service ID, it says:
Your website must support TLS 1.2 or higher.
You should just need to register https://YOUR_FIREBASE_PROJECT_ID.firebaseapp.com/__/auth/handler in the "Return URLs" when configuring the Service ID in the Apple Developer Console.
Note that Apple doesn't let you use localhost as the return uri, so I found that I couldn't test it locally either.

Google 400 Error: invalid request Custom scheme URIs are not allowed for 'Web' client type

When I am signing into Gmail in my iOS App, I am getting the below error (screenshot) and the sign-in fields do not appear. We are loading the sign-in screen in a WKWebView.
We are using a custom URI redirect but why is google throwing this error now. What are the alternatives to a custom URI?
Swift 2.3 project
Using OAuthSwift v0.6.0 cocoapod
This started quite recently only in the past week or so I believe something changed with Google's APIs.
I have read that google is deprecating webviews for OAuth and will block requests on April 20, 2017. As seen here in a Google Developers Blog:
https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html
Does this mean I already need to use or is there another viable solution? I thought I had more time before needing to update this.
My guess is that your client is registered incorrectly in Google Cloud Console. A 'WEB' client is typically a server or Javascript application. An iOS app should be registered as an iOS client.
https://developers.google.com/identity/protocols/OAuth2InstalledApp#creatingcred
I Just found this problem too.
Please check google developer console and look at the credentials keys
Your Client ID in google-info plist must come from iOS application, not the web.
And use that Client ID to be revereseClientID and copy it in to URI type
I have solved the problems by create project in Fire Base Because REVERSED_CLIENT_ID generate from developers.google.com Incorrect.
Try create your project in FireBase
https://console.firebase.google.com
you must cross check clientId at your 'Google Dashboard' clientId and clientId at "GoogleProject.Plsit".if both are different, copy ClientID from 'Google Dashboard' and paste it on "GoogleService-Info.Plsit".and also amend your reverseClientId in "GoogleService-Info.Plsit" according to newly pasted ClientID(you check the pattern how reverseClientId created from client Id in "GoogleService-Info.Plsit"). And then paste thid reverseClientId in 'URL type' in your project setting.
In case of mine clientId on "GoogleService-Info.Plsit" and my 'Google Dashboard' were different.
chech your google dashboard here : https://console.developers.google.com/apis/credentials?project=firebase
I just experienced this issue following the Google Signin for iOS Guide. The plist generated file is not the good one. You need to take a look at the clientID and reversedClientID and be sure that they are the ones for the iOS app on your Google developer portal.
I faced this error after previously creating a GoogleService-Info.plist file using the site Google Sign In directs you to. I later started using Firebase, which seems to create a separate .plist file. After attempting to include Firebase's new .plist file, my Google Sign In button started yielding the invalid_request error with the Custom scheme URIs are not allowed for WEB client type message.
In order to fix the problem I tried many things, but in the end deleting MY ENTIRE Firebase project on their web console (not just the individual app), recreating a new Firebase project from scratch, and re-downloading the new .plist file, solved the error.
It creates two client ID. one for web and one for iOS application. Web client will be in the google plist by default. So it gives the above error. Use iOS Client id from google console or create credential for iOS application.
For my experience, I had followed Google's SignIn iOS Swift guide and had downloaded a Web OAuth JSON file. They literally provide you the wrong Plist file for an iOS setup.
Just in case somebody else runs into this issue here are the steps I followed:
Go to the Google Developers console.
Go to the Credentials section.
Notice there are two items in the "OAuth 2.0 client IDs" section. (If you previously attempted to configure an iOS Google SignIn project.
Click on the name of the "iOS client for ".
Click "Download PLIST File".
Delete the Google web Plist file from your project.
Drop in the new iOS based Plist file.
Copy over the new REVERSED_CLIENT_ID into your URL Types of the Info page of your project. (This is detailed in Google's guide).
Attempt to run your app again.
Note: I got the Google Sign In API to work with Swift v3 and XCode v8.
I was getting the same error. Then I figured out, that I did not provide my app Bundle Id to access the Google Sign In Service in my app.
You do that from the page with the link:
https://developers.google.com/mobile/add?platform=ios&cntapi=signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fios%2Fsign-in%3Fconfigured%3Dtrue&cntlbl=Continue%20Adding%20Sign-In
1.Sign in with your Google Developer account.
2.Create you app name and copy the App bundle Id from your project from:
Project and Target List> General> Bundle Identifier.
3.Choose your Country
4.Enable Google- Sign In.
Then perform the necessary steps to integrate Google Sign In in with your iOS App.
I was facing the same issue. I followed all the instructions to integrate my app several times, and played with the code to see if there was any hidden issue in the code.
I downloaded and configured the sample app from google at github https://github.com/googlesamples/google-services and go the same issue, so it was not the code.
It seemed like there is something in my console configuration so I switched between different google console apps, and played changing the bundle IDs.
The only thing that managed to fix this issue was to use Firebase instead. I created an app in the firebase console, downloaded the new plist, and it worked.
Still not sure why this didn't work for me in the first place, this doesn't seem to be a common problem, but I hope this helps someone.
cheers,
Kindly check console.developers.google.com/apis/credentials for your project and see whether there is already a client_id in OAuth 2.0 client IDs section , if so then copy that client id and replace it with you GoogleService-Info.plist file's CLIENT_ID and accordingly change REVERSED_CLIENT_ID (in reverse manner) now clean and build your app and test it will work
I was using Meteor with Cordova and Meteor's official google integration, which relies on cordova-plugin-googleplus.
I had to:
create both an iOS and a web Client ID
use the web Client ID on the settings / server / database as documented
but then use the reverse of the iOS web client as the REVERSED_CLIENT_ID for cordova-plugin-googleplus
Expo, authentication with Google.logInAsync from expo-google-app-auth
In my case I just used androidClientId instead of androidStandaloneAppClientId

Can't able to reach identity.apple.com/pushcert portal for creating a Apple Push certificate

I'm trying to configure a MDM for all my mobile phones. But for iPhone, I need to create a Apple Push certification to do that, but can't able to reach the portal identity.apple.com/pushcert and getting Forbidden error. Do anyone guide me what went wrong with this?
Looks like probably your trying to access using http instead of https.
https://identity.apple.com/pushcert/ should work. Else please re-check if its not the routing issue between your service provider & Apple.
Regards,
_Ayush
if you have previous files related to certificates on your computer delete them these include csr and pem files. go back to portal link and you will find it will now navigate to the actual link.

iOS - Google SignIn fails if a Google App is on the device

I've integrated Google SignIn (2.2) based on instructions here:
https://developers.google.com/identity/sign-in/ios/start
It works when there is no Google app on the device. So Google SDK opens a web view where I can sign in a google account, and GIDSignInDelegate method didSignInForUser is called with a valid access token with no error.
But if I have Google app or Youtube app installed, the SDK will open the Google app, where I can sign in my google account, and when I choose the account and it redirects back, it throws an error:
"A potentially recoverable error occured. You may try again."
No matter how many times I retry it never worked.
(Deep link url:
com.googleusercontent.apps.<my app id>://api/sso/v1/tokenResponse?ec=-216414001&e=A%20potentially%20recoverable%20error%20occured.%20You%20may%20try%20again)
Has anyone seen the same issue? What could go wrong?
So it turns out to be a typo in the app bundle id in Google Developers Console.
As requested in some comments, here are some more details:
In order to support google sign in, you need to a client id in
https://console.developers.google.com
under APIs & Auth/Credential
In our case, we were seeing the error because in the client id we created for iOS app, we had a typo in the app bundle id. (Instead of com.companyname.appname we typed com.companyname.companyname)
I guess there can be other ways to cause the same error, but one good place to check is the developer console (https://console.developers.google.com), just make sure every field makes sense to you.
Create a new Configuration file here -> https://developers.google.com/mobile/add?platform=ios&cntapi=signin&cntapp=Default%20Demo%20App&cntpkg=com.google.samples.quickstart.SignInExample&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fios%2Fstart%3Fconfigured%3Dtrue&cntlbl=Continue%20Try%20Sign-In
When it asks for your iOS Bundle Id, make sure it matches the bundle id that you find in your Xcode project settings (target -> General -> Bundle Identifier)
Delete the old "GoogleService-Info.plist" file and replace it with the new one you just created
clean, rebuild, try to sign in again

Change Facebook developer account for an iOS app - bundle identifier

I've developed an iOS app that is integrated with Facebook to allow users to log in using their FB accounts. That works fine.
The app is also supposed to use a web service developed by another company. Said web service also uses Facebook integration.
Both my app and the web service were developed using different Facebook developer accounts. Now it seems a major problem I've got needs both of these to be part of the same "Facebook application" which means they'd have to belong to the same Facebook developer account.
I asked the other company's developer to add a native iOS aspect to his Facebook app, gave him my app's bundle ID and received a Facebook app ID and secret in return. I made the appropriate changes to my app's Info tab in XCode - the bundle ID is the same one that I gave him, the FacebookAppID is the one I got from him and so is the URL Schemes thing (with an "fb" preceding the actual FBAppID).
However, when I try to log in using Facebook credentials in the app, I constantly get com.facebook.sdk error 2 which is explained in the console by this message: FBSDKLog: System authorization failed:'The Facebook server could not fulfill this access request: remote_app_id does not match stored id '. This may be caused by a mismatch between the bundle identifier and your app configuration on the server at developers.facebook.com/apps.
Is there a step I'm missing in this transition of app between FB developer accounts? Could something else be the cause of the problem here? If my question is off-topic, please at least point me in the direction where I could get some answers.
Indeed - it turned out that the problem was exactly what the error message said: the bundle ID was different for both the application in XCode and in the Facebook developer account; that was because the developer from the other company made a spelling mistake (lower case instead of upper case letter) in the bundle ID.

Resources