在运行时更改客户端ID,Google登录
问题描述:
我正在使用iOS应用程序,它应该使用我们网站上的API。 为了连接到它,用户应该从设备登录到他的谷歌帐户,然后我们自动连接到API。我们使用https://developers.google.com/identity/sign-in/ios/start-integrating 进行授权在运行时更改客户端ID,Google登录
问题是存在多个网站,并且每个网站都有不同的客户端ID。
我试图改变的.plist通过编程的存储CLIENT_ID和它不会工作:
@IBAction func signInButtonClicked(sender: AnyObject) {
let signInPlistDirectory = *pathToGoogleService-Info.plist*
let signInPlist = NSMutableDictionary(contentsOfFile: signInPlistDirectory)!
if ((webNodeUrl.text?.hasSuffix(".testing-sites.internal")) != nil) {
signInPlist["CLIENT_ID"] = signInPlist["TESTING_CLIENT_ID"]
} else {
signInPlist["CLIENT_ID"] = signInPlist["PROD_CLIENT_ID"]
}
signInPlist.writeToFile(signInPlistDirectory, atomically: true)
}
也许有人知道,是它甚至有可能吗?
答
文档说以下内容:
如果您在创建配置文件并没有增加额外的服务,你不需要把它复制到你的项目。但是,请保留配置文件,因为它包含您需要设置Xcode项目的信息。
如果你不使用额外的服务,那么你应该能够逃脱,而不必与plist中(不,我敢肯定,你与你的问题的例子做什么)打扰。
来呈现登录表单前,你可以尝试像以下:
let manager = GIDSignIn.sharedInstance()
manager.clientId = "CLIENT_ID_YOU_WANT_TO_USE"
manager.delegate = self
manager.uiDelegate = self
manager.shouldFetchBasicProfile = true
manager.scopes = [
"https://www.googleapis.com/auth/plus.me"
]
manager.signIn()
我还没有试过在同一运行期设置clientId
值超过一个客户端标识与它没有记录至于它会工作,因为它是一个独特的用例,但它值得一试。
另外请记住,您在制作时将所有的URL方案添加到您的项目中,并且没有其他方法。
从你的问题,你说你要在它的外观代码示例但是使用多个不同的网站(与不同的客户端ID的)像你只是想一个不同的开发环境(PROD和测试)之间切换。如果是这种情况,那么我建议你看看this answer。它提供了一些关于管理多个环境的有用技巧。