使用Google登录iOS时未捕获的NSInvalidArgumentException

sga*_*mon 2 ios google-signin

我今天尝试升级到适用于iOS的Google登录(我们有一个针对Google+登录的现有应用).

我按照入门指南来构建配置,并添加了我正确的URL方案(例如,应用程序的客户端ID).

启动应用程序并尝试使用Google登录后,我收到以下未被捕获的异常:

2015-06-09 03:43:23.800 <appname>[238:7171] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Your app must support the following URL schemes: (null)'
Run Code Online (Sandbox Code Playgroud)

异常发生在我们的控制之外,在GIDSignIn.signIn和GIDSignIn.delegate.signIn之间.

有什么办法可以解决这个问题吗?

cla*_*ass 5

发生的事情是Google SDK正在从字典中检索您的客户端配置,GoogleService-Info.plist但很可能找不到任何配置或无法找到该文件.

当你打电话时[[GGLContext sharedInstance] configureWithError: ..,例如:

NSError* configureError;
[[GGLContext sharedInstance] configureWithError: &configureError];
Run Code Online (Sandbox Code Playgroud)

代码从Google-ServiceInfo.plist文件中解析您的客户端ID ,您应该将其添加到一个supporting files或其他共享资源文件夹中,然后检查您是否还为反向客户端ID添加了一个URI,该URI是从plist字典中提取的.

首先,如果您没有此文件,请按照新的为您的应用页面启用Google服务的向导生成该文件.

接下来,请确保您将GoogleService-Info.plist文件作为Xcode项目中的资源进行复制build phases.当您成功将其添加到项目中时(通常最好在"共享资源"部分中添加),错误消息将不再指示需要空URI.

最后,确保您已在应用程序的URL中添加了捆绑ID和反向客户端ID - 这应该很容易,因为错误消息将告诉您此时缺少的内容.

如果所有这些仍然给您带来麻烦,您可以尝试运行以下快速入门示例尝试使用Google登录iOS:

pod try Google
Run Code Online (Sandbox Code Playgroud)

从SignInExample.xcodeproject示例开始......