iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iOS:GPPSignInButton始终要求“具有脱机访问权限”权限大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已根据以下内容设置了GPPSignInButton:

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

let googleSignIn = GPPSignIn.sharedInstance()
    googleSignIn.clientID = GoogleClientID
    googleSignIn.attemptSSO = true
    googleSignIn.homeServerClientID = GoogleServerClientID
    googleSignIn.scopes = ["https://www.googleapis.com/auth/plus.login","https://www.googleapis.com/auth/plus.profile.emails.read"]
    googleSignIn.delegate = self
    googleSignInButton.colorscheR_221_11845@e = kGPPSignInButtonColorscheR_221_11845@eLight
    googleSignInButton.style = kGPPSignInButtonStyleWide

用户第一次@L_616_3@时,它要求正确的权限并返回idToken,该idToken被转发到服务器并交换为access_token / refresh_token.

但是,在调用GPPSignIn.sharedInstance().signOut()之后,再次@L_616_3@将始终要求“具有脱机访问”权限.

我已经阅读了一些引用此内容的其他SO帖子,其中大多数引用了URL参数“approval_prompt”和“access_type”.鉴于我使用的是iOS SDK,我无法设置这些参数.

应用程序在Web视图中路由到的URL是:

https://accounts.google.com/o/oauth2/auth?gpsdk=1.7.1&audience=<server-client-id>&response_type=code&verifier=94014002&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.login%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.profile.emails.read&gpbtn=1.1&hl=en&redirect_uri=<redirect_uri>&client_id=<client-id>&state=702574

我在服务器端有相同的范围(“@L_616_3@”和“电子邮件”),我无法弄清楚我还需要做什么,所以它并不总是要求获得离线访问权限.

解决方法

我知道您使用的是Google的iOS SDK.

您所说的是Google Api认行为.

使用以下解决方案,您可以将“approval_prompt = force”和“access_type = offline”参数添加到URl.

解:

为了添加这些参数,您必须修改GTMOAuth2SignIn.m并将“paramsDict”替换为以下NSMutableDictionary:

NSMutableDictionary *paramsDict = [NSMutableDictionary DictionaryWithObjectsAndKeys:
                                 @"code",@"response_type",clientID,@"client_id",scope,@"scope",@"force",@"approval_prompt",@"offline",@"access_type",nil];

我相信在此之后您的问题将得到解决.

更新:

对于GPPSignin类的使用,您应该检查是否可以使用trySilentAuthentication.
这个api检查是否可以在没有用户交互的情况下@L_616_3@.

有关trySilentAuthentication的说明

当您调用authenticate时,sdk会在用户的钥匙串中保存长期存在的令牌,以及用于进行API调用的短期令牌.调用trySilentAuthentication检查长期令牌是否在密钥链中,并生成新的短期令牌.如果成功,则意味着用户之前已在该设备上@L_616_3@该应用程序,因此您通常希望对此进行适当的响应.如果它失败(没有令牌)它将只返回false,或者如果它不能生成一个短生命令牌,它将调用finishedWithAuth:error并设置@L_801_30@.

大佬总结

以上是大佬教程为你收集整理的iOS:GPPSignInButton始终要求“具有脱机访问权限”权限全部内容,希望文章能够帮你解决iOS:GPPSignInButton始终要求“具有脱机访问权限”权限所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。