16

我可以使用GIDSignIn以下代码对单个帐户进行身份验证。

    GIDSignIn *googleSignIn = [GIDSignIn sharedInstance];
    googleSignIn.delegate = self;
    googleSignIn.uiDelegate = self;
    googleSignIn.clientID = (NSString*)cGmailAppClientId;
    googleSignIn.scopes = [self getGmailAuthenticationScopes];;
    [googleSignIn signIn];

但是GIDSignIn是共享实例。它仅适用于一个帐户。如何添加多个帐户?应同时访问多个帐户(例如获取访问令牌)。

相关的 SO 问题没有给出正确的想法。

4

1 回答 1

5

我认为不GIDSignIn支持多个帐户。虽然理论上您可以实例化除 之外的实例sharedInstance,但一次只能将一个授权持久化到 iOS 钥匙串。(该库需要多个密钥来保存多个授权,但如果您实例化多个实例,它怎么知道冷启动后哪个是哪个?)

幸运的是,有一个可以实现相同目的的GTMAppAuth替代库Google 的。它的使用比 稍微复杂一些GIDSignIn,但通常以相同的方式工作。主要区别在于 1) 您可以一次创建多个授权,以及 2) 您可以使用您选择的密钥将它们持久保存到 iOS 钥匙串中。如果您对访问 Gmail 特别感兴趣,那么流行的 MailCore2 库中的这些步骤可能会有所帮助。

从这个线程听起来,这些库是由公司内的不同团队支持的,但我怀疑它们需要一段时间才能融合,如果有的话。

于 2018-03-24T04:36:13.667 回答