保存当前的GIDGoogleUser,而不是在每次启动时login
我正在使用GIDSignInButton
将我的用户签入Google。 问题是,我不知道如何保存当前用户,以便每个用户不必每次打开应用程序login。 我试过使用signInSilently()
但我得到The operation couldn't be completed. (com.google.GIDSignIn error -4.)
The operation couldn't be completed. (com.google.GIDSignIn error -4.)
每次。
这个错误在头文件中说:
// Indicates there are no auth tokens in the keychain. This error code will be returned by // signInSilently if the user has never signed in before with the given scopes, or if they have // since signed out. kGIDSignInErrorCodeHasNoAuthInKeychain = -4,
在我的情况下,用户已经login给定的范围,他们还没有退出。 所以我不确定是什么原因导致了这个错误。
用户signInSilently()
后,我应该如何保存那个可以在那之后使用signInSilently()
实例? 是否有处理涉及刷新和访问令牌?
你确定你没有用户退出,甚至连接断开?
我总是检查用户是否已经login或使用hasAuthInKeychain
保存了以前的身份validation(例如在viewWillAppear
):
private func checkIfGoogleUserIsAuthorized() { if GIDSignIn.sharedInstance().hasAuthInKeychain() { // User was previously authenticated to Google. Attempt to sign in. GIDSignIn.sharedInstance().signInSilently() } else { // User was not previously authenticated to Google. self.updateUI() } }
如果没有保存authentication,则必须触发沉默login并处理GIDSignInDelegate
协议didSignInForUser
方法的实现回复。
如果在你的项目中,实现GIDSignInUIDelegate
的类是UIViewController
的子类,那么不要实现
signInWillDispatch:error: signIn:presentViewController: signIn:dismissViewController:
GIDSignInUIDelegate
协议的方法。
如果添加,从视图控制器中删除这些方法。 但是您应该遵守GIDSignInUIDelegate
协议而不实施这些方法。
它会解决你的错误-4。
请参阅Google开发人员指南获取帮助
- oauth 2.0 webview ios sdk
- 从响应string中提取令牌
- Google Plus SDK不刷新令牌(iOS)
- 优步无效的OAuth 2.0凭据提供Uber身份validation在iOS Swift中
- SFSafariViewController删除OAuth2 Cookie
- Yelp API OAuth – oauth_signature
- 无法使用LinkedIn的OAuth入门套件共享
- 主线程上的OAuthSwift请求callback
- OAuth2login到SoundCloud最近返回错误域= NXOAuth2HTTPErrorDomain代码= 401“HTTP错误:401”