App getting crash when click on GoogleSignIn button

IosSwiftGoogle Signin

Ios Problem Overview


I am using Google Sign-In SDK 4.0.1. When I press googleSignInButton then app will be crash. And gave below error, how to fix this:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Your app is missing support for the following URL schemes: com.googleusercontent.apps.107731993306-6s44u18onibp6gi0ddj94si1aifshhg6'
*** First throw call stack:
(
	0   CoreFoundation                      0x0000000101ac0d4b __exceptionPreprocess + 171
	1   libobjc.A.dylib                     0x000000010110121e objc_exception_throw + 48
	2   CoreFoundation                      0x0000000101b2a2b5 +[NSException raise:format:] + 197
	3   xxxxx                           0x000000010084b3cb -[GIDSignIn signInWithOptions:] + 246
	4   xxxxx                           0x000000010084efc2 -[GIDSignInButton pressed] + 242
	5   UIKit                               0x00000001028f78bc -[UIApplication sendAction:to:from:forEvent:] + 83
	6   UIKit                               0x0000000102a7dc38 -[UIControl sendAction:to:forEvent:] + 67
	7   UIKit                               0x0000000102a7df51 -[UIControl _sendActionsForEvents:withEvent:] + 444
	8   UIKit                               0x0000000102a7ce4d -[UIControl touchesEnded:withEvent:] + 668
	9   UIKit                               0x0000000102965545 -[UIWindow _sendTouchesForEvent:] + 2747
	10  UIKit                               0x0000000102966c33 -[UIWindow sendEvent:] + 4011
	11  UIKit                               0x00000001029139ab -[UIApplication sendEvent:] + 371
	12  UIKit                               0x000000010310072d __dispatchPreprocessedEventFromEventQueue + 3248
	13  UIKit                               0x00000001030f9463 __handleEventQueue + 4879
	14  CoreFoundation                      0x0000000101a65761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
	15  CoreFoundation                      0x0000000101a4a98c __CFRunLoopDoSources0 + 556
	16  CoreFoundation                      0x0000000101a49e76 __CFRunLoopRun + 918
	17  CoreFoundation                      0x0000000101a49884 CFRunLoopRunSpecific + 420
	18  GraphicsServices                    0x00000001074cfa6f GSEventRunModal + 161
	19  UIKit                               0x00000001028f5c68 UIApplicationMain + 159
	20  xxxxxxxx                           0x00000001007c449f main + 111
	21  libdyld.dylib                       0x0000000104d5368d start + 1
	22  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException`

My AppDelegate.Swift is

class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {
public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
   if (error == nil) {
    
    let userId:NSString = user.userID as NSString;                  // For client-side use only!
    let idToken: NSString = user.authentication.idToken as NSString; // Safe to send to the server
    let fullName:NSString = user.profile.name as NSString;
    let givenName:NSString = user.profile.givenName as NSString;
    let familyName:NSString = user.profile.familyName as NSString;
    let email:NSString = user.profile.email as NSString;
    print(userId)
    print(userId,idToken,fullName,givenName,familyName,email)
    }
    
   else {
    print("\(error.localizedDescription)")
    }
}

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
    let kclientID:NSString = "107731993306-xxxxxxxxxxxxxxxxx.apps.googleusercontent.com"
    
   GIDSignIn.sharedInstance().clientID = kclientID as String!
           
    GIDSignIn.sharedInstance().delegate = self
    return true
}


func application(application: UIApplication,
                 openURL url: NSURL, options: [String: AnyObject], annotation:Any, sourceApplication:String?) -> Bool {
    
    return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication:sourceApplication, annotation: annotation)
} 

> Please give me the solution. Why it is crashed?

Ios Solutions


Solution 1 - Ios

As the error clearly says, your app is missing support for the url schemes.

Add the following schemes to your info.plist

<key>CFBundleURLTypes</key>
<array>
	<dict>
		<key>CFBundleTypeRole</key>
		<string>Editor</string>
		<key>CFBundleURLSchemes</key>
		<array>
			<string>***Your bundle ID***</string>
		</array>
	</dict>
	<dict>
		<key>CFBundleTypeRole</key>
		<string>Editor</string>
		<key>CFBundleURLSchemes</key>
		<array>
			<string>com.googleusercontent.apps.107731993306-6s44u18onibp6gi0ddj94si1aifshhg6</string>
		</array>
	</dict>
	<dict>
		<key>CFBundleTypeRole</key>
		<string>Editor</string>
		<key>CFBundleURLSchemes</key>
		<array>
			<string>***Something here***</string>
		</array>
	</dict>
</array>

Check this url for your id => https://developers.google.com/identity/sign-in/ios/start-integrating

Your info.plist should look like ->

enter image description here

Solution 2 - Ios

You have to add a URL scheme to your project

  1. Open your project configuration: double-click the project name in the left tree view. Select your app from the TARGETS section, then select the Info tab, and expand the URL Types section
  2. Click the + button, and add a URL scheme -com.googleusercontent.apps.107731993306-6s44u18onibp6gi0ddj94si1aifshhg6

https://developers.google.com/identity/sign-in/ios/start-integrating#add_a_url_scheme_to_your_project

enter image description here

Solution 3 - Ios

I got that crash too. But accepted answer did not help me. I have fixed that crash in other way:

Double check that:

In AppDelegate straight DNS:

GIDSignIn.sharedInstance().clientID = "536164374389-ivga9a9at2g31nfmhpvdyhc98yf6afnr.apps.googleusercontent.com"

In Info.plist reverse DNS:

<string>com.googleusercontent.apps.536164374389-ivga9a9at2g31nfmhpvdyhc98yf6afnr</string>

Solution 4 - Ios

Xcode gives you a string - Put it here as in the below image

enter image description here

Solution 5 - Ios

I ran into similar problem. Try this method if other methods didn't help you.

There is a chance you implemented Google and Facebook login together as they are often implemented together.

The latest Google Dev docs make you implement the URL scheme using Your Project Target > Info > URL Types. While Facebook docs will tell you to implement the url scheme in info.plist file. When you implement in .plist file the other URL Schemes will be replaced. So implement all URL Schemes in Project's Target section.

Your project target will look like this

Hope someone finds this helpful

Solution 6 - Ios

For those who came here from Flutter because of the crash of google_sign_in package on iOS devices - I've already covered this issue here

Long story short: try to explicitly set properties hostedDomain and clientId.

GoogleSignIn googleSignIn = GoogleSignIn( 
  scopes: ['email', 'profile'],
  hostedDomain: "", 
  clientId: "",);

Solution 7 - Ios

I've also waste over 4hours for similar logs (I'm developing ios app by flutter with VScode)

For me the main problem was GoogleService-Info.plist was not truly in the Runner directory.

I MUST had to add the GoogleService-Info.plist by XCODE, by right clicking Runner and add files button.

For overall, I learn that The flutter debugger(or vscode plugin?) does not give full information about the error.

Please look this for more information https://github.com/flutter/flutter/issues/22536

Check this image for what the 'Right clicking Runner and than add files'

Solution 8 - Ios

you have to add reversed client id instead of normal one.

Solution 9 - Ios

in GoogleSignIn SDK 5.0

add code

GIDSignIn.sharedInstance().delegate = self

GIDSignIn.sharedInstance().presentingViewController = self

instead of this code

GIDSignIn.sharedInstance().delegate = self

GIDSignIn.sharedInstance().uiDelegate = self

Solution 10 - Ios

in my case, using react native firebase, i had both the web and ios clientiD set, using only the iosClientId solved it for me GoogleSignin.configure({ webClientId: '' });

Solution 11 - Ios

In my case, I forgot export GoogleService-info.plist from Firebase to my Xcode project.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVikasView Question on Stackoverflow
Solution 1 - IosKakshil ShahView Answer on Stackoverflow
Solution 2 - IosJackView Answer on Stackoverflow
Solution 3 - IosArgusView Answer on Stackoverflow
Solution 4 - IoscodersView Answer on Stackoverflow
Solution 5 - Iosrule_it_subirView Answer on Stackoverflow
Solution 6 - IosKirill KarmazinView Answer on Stackoverflow
Solution 7 - IoshemistoneView Answer on Stackoverflow
Solution 8 - IosDivyesh VasoyaView Answer on Stackoverflow
Solution 9 - IosRahul PatelView Answer on Stackoverflow
Solution 10 - IosDre OleView Answer on Stackoverflow
Solution 11 - IosAndrei RView Answer on Stackoverflow