0

GTMOAuth2ViewControllerTouch我有一个用于登录的应用程序。

最初范围只是 using https://www.googleapis.com/auth/userinfo.email,因此用户已经使用此权限登录。

我想申请新的权限https://www.googleapis.com/auth/calendar

因此,当它从钥匙串中检索 auth 对象时:

GTMOAuth2Authentication *auth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:keychainItemName
                                                                                              clientID:clientID
                                                                                          clientSecret:clientSecret];

并且这个新权限不在auth对象的范围内,我尝试再次呈现GTMOAuth2ViewControllerTouch以扩展范围,但它需要用户再次输入凭据。

我希望这个控制器只是请求批准这个新权限。

我怎样才能实现这种行为?google-api-objectivec-client有可能吗

更新:

我已经能够通过使用GTMOAuth2ViewControllerTouch's swapInCookies&swapOutCookies方法更接近..

对于新安装,这些方法将再次打开同一个控制器(用于登录的 webview),第二次它只是请求权限,使用户无法再次输入他的凭据。

但是现在的问题是当前的应用程序swapOutCookies在登录完成时不会,所以没有cookies可以交换到webview中,所以当用户应该已经登录时它会要求登录。

4

1 回答 1

0

您可以通过调用然后调用请求同意来使用GIDSignIn共享实例附加新范围。有关更多信息,请参阅 iOS Google 身份文档中的请求附加范围scopessignIn

为请求额外范围提供的示例是

NSString *driveScope = @"https://www.googleapis.com/auth/drive.readonly";
NSArray *currentScopes = [GIDSignIn sharedInstance].scopes;
[GIDSignIn sharedInstance].scopes = [currentScopes arrayByAddingObject:driveScope];

[[GIDSignIn sharedInstance] signIn];
于 2016-01-27T04:10:15.480 回答