我正在编写一个 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扩展然后大概我需要再次通过授权过程?
有没有一种方法可以让我从主应用程序访问现有的身份验证令牌并在共享扩展中使用它?