Google plusloginxcode共享扩展
我正在编写一个iOS应用程序,通过电子邮件分享网页链接,作为其中的一部分,我希望用户能够login到谷歌加。 我已经得到了包含的应用程序工作正常使用从这里的指示:
https://developers.google.com/+/mobile/ios/sign-in
现在我试图添加一个共享扩展,也可以访问用户的谷歌+configuration文件。 我开始试图将loginbutton添加到共享扩展,但我不认为这将工作,因为点击button后,你从应用程序中取出到浏览器接受权限,然后有没有办法重新回到共享扩展(或者至less我不能看到一种方式)。
我现在所希望的是,用户可以在主(含)应用程序中login和接受权限,但之后再使用共享扩展,并且仍然使用相同的configuration文件login。 我在共享扩展中使用自定义UIViewController,作为第一次尝试,我试图在共享扩展中使用相同的客户端ID作为包含的应用程序,并在viewDidLoad方法中调用此:
GPPSignIn *signIn = [GPPSignIn sharedInstance]; signIn.shouldFetchGooglePlusUser = YES; signIn.shouldFetchGoogleUserEmail = YES; signIn.clientID = kClientID; signIn.scopes = @[ @"profile" ]; signIn.delegate = self; if ([signIn hasAuthInKeychain]) { NSLog(@"Has auth in keychain"); } else { NSLog(@"No auth in keychain"); }
在包含应用hasAuthInKeychain返回true,但在共享扩展它是错误的。 我正在使用的客户端ID绑定到主应用程序包,所以我不知道我是否应该能够在共享扩展中使用它,但如果我试图为共享创build一个单独的客户端ID那么推测大概我需要再次通过授权过程?
有没有一种方法可以从主应用程序访问现有的身份validation令牌,并在共享扩展中使用它?
你在正确的轨道上。
要在应用程序和扩展程序中访问相同的钥匙串,您需要在Xcode中为它们启用“钥匙串共享”function。 当你这样做时,Xcode可能会想要更新你的应用程序ID和供应configuration文件,因为他们需要反映新的能力。
不过这是否足够取决于Google框架如何处理钥匙串。 这可能是你所需要的,因为SecItemAdd
的文档指出 ,默认情况下,项目将被添加到第一个列出的组。 但是我不知道Google的代码如何工作,所以我不能确定这一点。
一旦你这样做,你可能不得不重新授权应用程序,以获得凭据到正确的组。 然后,应用程序和扩展程序可以查找现有的值。
- 注册时出现Google+集成iOS – EXC_BAD_ACCESS错误
- 允许后,Googlelogin不会redirect到应用程序
- Facebook和Google+login
- 无法通过iPhone应用程序中的Oauth 2.0获取Google +的访问令牌
- 如何从iOS的Google Developers Console获取客户端密码?
- 无法创build新的客户端ID(谷歌加上在iOS SDK中login)
- Amazon Cognito iOS SDK V2使用Facebook和Google+提供者身份validation问题
- Google +分享获取错误警报
- Google plus API,用于在Facebook上发布信息