Ios8 具有共享扩展和密钥链的iOS上的GPPSignIn问题

Ios8 具有共享扩展和密钥链的iOS上的GPPSignIn问题,ios8,google-plus,keychain,ios-extensions,Ios8,Google Plus,Keychain,Ios Extensions,我已经编写了一个iOS 8应用程序(在objective C中),它使用google plus登录。主应用程序及其共享扩展使用相同的密钥链,因此使用GPPSignInButton从主应用程序登录可以为扩展提供身份验证。问题是,只有当这两个目标以非常特定的顺序运行时,我才能让它工作 这行不通: 打开主应用程序并登录(成功) 打开共享扩展并尝试“trySilentAuthentication”-此操作失败,因为对于共享扩展,密钥链中没有身份验证 但是,这确实有效: 首先打开共享扩展-正如所料,密钥链

我已经编写了一个iOS 8应用程序(在objective C中),它使用google plus登录。主应用程序及其共享扩展使用相同的密钥链,因此使用GPPSignInButton从主应用程序登录可以为扩展提供身份验证。问题是,只有当这两个目标以非常特定的顺序运行时,我才能让它工作

这行不通:

  • 打开主应用程序并登录(成功)
  • 打开共享扩展并尝试“trySilentAuthentication”-此操作失败,因为对于共享扩展,密钥链中没有身份验证
  • 但是,这确实有效:

  • 首先打开共享扩展-正如所料,密钥链中没有身份验证
  • 打开主应用程序并登录(成功)
  • 重新打开共享扩展-这一次密钥链中有auth,并且“trySilentAuthentication”成功
  • 因此,共享扩展似乎无法访问密钥链中的身份验证,除非它在主应用程序登录之前打开。我不认为这是钥匙链的一般问题,因为我可以在应用程序和扩展之间共享钥匙链中的其他类型的对象,而不管它们的打开顺序如何

    我用两个单独的普通应用程序(没有扩展)做了一些实验,发现同样的问题也会出现——应用程序可以在一个密钥链中共享google plus auth,但前提是两个应用程序都有机会访问[GPPSignIn sharedInstance]——它们甚至不必对共享实例做任何事情,刚刚访问了它。如果您先登录到一个应用程序,然后尝试使用现有的密钥链加入,则无法访问已有的身份验证

    以前有没有人遇到过这种类型的问题,或者知道我如何调试身份验证过程来找出顺序为何如此重要