如何解决Unity iOS端GIDSignIn报错You must specify |clientID|的问题
解决方案
- 首先确认你导入Xcode项目的
GoogleService-Info.plist(你提到的list为拼写误差)是否正确加入到主Target的构建资源中:
拖动文件到Xcode项目时必须勾选「Copy items if needed」,同时进入主Target的Build Phases > Copy Bundle Resources,确认GoogleService-Info.plist在列表内,没有的话手动添加,否则运行时无法读取配置文件内的clientID参数。 - 针对你使用的
GoogleSignIn ~> 4.0版本,需手动触发clientID赋值:
打开Xcode项目内的AppDelegate.m文件,在didFinishLaunchingWithOptions方法中添加如下代码:
4.x版本的GoogleSignIn不会自动从Firebase配置中读取clientID,必须手动赋值才会生效。#import <GoogleSignIn/GoogleSignIn.h> #import <Firebase/Firebase.h> // 在didFinishLaunchingWithOptions方法内添加以下行 [GIDSignIn sharedInstance].clientID = [[FIRApp defaultApp] options].clientID; - 检查Info.plist的URL Scheme配置:
从GoogleService-Info.plist中复制REVERSED_CLIENT_ID对应的值,进入主Target的Info > URL Types,添加一个新的URL Type,Identifier留空,URL Schemes填写刚才复制的反向客户端ID,缺失该配置也会触发clientID识别异常。 - 确认Pod依赖版本正确:
打开Podfile.lock文件检查GoogleSignIn的实际安装版本,确认是4.x分支,如果自动安装了5.x及以上版本,执行pod deintegrate清理现有依赖后重新执行pod install即可。高版本GoogleSignIn的初始化逻辑与4.x不兼容,会导致原有配置失效。 - 检查Unity侧插件配置:
如果你使用的是第三方Google登录Unity插件,需在插件的iOS配置项中手动填写你从Firebase控制台获取的iOS端clientID,部分插件不会自动读取GoogleService-Info.plist的参数,需要在Unity构建前预先配置。
内容的提问来源于stack exchange,提问作者karthik keyan
相关产品推荐
相关产品推荐

