Google plus登录xcode共享扩展程序

时间:2014-11-22 20:19:02

标签: ios xcode6 google-plus keychain ios8-extension

我正在编写一个iOS应用程序,通过电子邮件分享网页链接,作为其中的一部分,我希望用户能够登录google plus。我已经使用此处的说明使包含应用程序正常工作:

https://developers.google.com/+/mobile/ios/sign-in

现在我正在尝试添加可以访问用户的Google +个人资料的共享扩展程序。我开始尝试将登录按钮添加到共享扩展程序中,但我认为这不会起作用,因为单击按钮后,您将从应用程序中删除以接受浏览器以接受权限,然后是无法重定向回到共享扩展程序(或者至少我找不到方法)。

我现在希望的是,用户可以在主(包含)应用中登录并接受权限,但稍后使用共享扩展,仍然可以使用相同的配置文件登录。我在共享扩展中使用自定义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,但在共享扩展名中它为false。我正在使用的客户端ID与主应用程序的捆绑包相关联,所以我不确定我是否应该能够在共享扩展中使用它,但是如果我尝试为共享创建单独的客户端ID扩展然后我可能需要再次通过授权程序?

有没有办法让我可以从主应用程序访问现有的身份验证令牌并在共享扩展中使用它?

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上。

要在应用和扩展程序中访问相同的钥匙串,您需要启用"钥匙串共享" Xcode中的两个功能。执行此操作时,Xcode可能希望更新您的应用ID和配置文件,因为它们需要反映新功能。

这是否足够取决于Google框架如何处理钥匙串。它只需要 ,因为作为docs for SecItemAdd indicate,默认情况下,项目将添加到第一个列出的组中。但我不知道谷歌的代码是如何运作的,所以我无法确定。

执行此操作后,您可能需要重新授权该应用以将凭据输入正确的组。之后,应用和扩展程序都可以查找现有值。