- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在 iOS 中实现 Google+ 登录,我使用了这段代码,它工作正常
signIn = [GPPSignIn sharedInstance];
signIn.delegate = self;
//signIn.shouldFetchGoogleUserEmail = YES;
signIn.shouldFetchGooglePlusUser = YES;
signIn.clientID = kClientId;
signIn.scopes = [NSArray arrayWithObjects:kGTLAuthScopePlusLogin,nil];
signIn.actions = [NSArray arrayWithObjects:@"http://schemas.google.com/ListenActivity",nil];
[signIn authenticate];
我想使用 [signIn trySilentAuthentication] 方法在每次用户登录时都不会离开,但是如果不使用 google+ 按钮 GPPSignInButton 它就无法工作
所以,使用这段代码而不是上面的代码有什么问题
signIn = [GPPSignIn sharedInstance];
signIn.delegate = self;
//signIn.shouldFetchGoogleUserEmail = YES;
signIn.shouldFetchGooglePlusUser = YES;
signIn.clientID = kClientId;
signIn.scopes = [NSArray arrayWithObjects:kGTLAuthScopePlusLogin,nil];
signIn.actions = [NSArray arrayWithObjects:@"http://schemas.google.com/ListenActivity",nil];
[signIn trySilentAuthentication];
是否可以将 trySilentAuthentication 与 didSelectRowAtIndexPath 一起使用?提前致谢
最佳答案
是的,当然。确保您正在调用 [[GPPSignIn sharedInstance] trySilentAuthentication] 而不是创建新的 GPPSignIn 实例,并确保您仅在设置 GPPSignIn 实例之后调用它。
因此您需要将您的代码片段分成两部分:在一些早期方法(viewWillAppear 或什至在应用程序委托(delegate)中)中设置 sharedInstance 的参数,并调用 trySilentAuthentication。当您收到来自 didSelectRowAtIndexPath 的调用时,请调用 [[GPPSignIn] sharedInstance] authenticate]。
编辑:阐明 trySilentAuthentication 的用途。
当您调用 authenticate 时,用户会被带到 Google+ 应用程序、Chrome 或 Safari 进行登录。当他们回来时,一个长生命周期的 token 会存储在用户的钥匙串(keychain)中,还有一个短生命周期的 token 用于进行 API 调用。调用 trySilentAuthentication 检查长生命周期 token 是否在 key 链中,并生成一个新的短生命周期 token 。如果成功,则意味着用户之前已在该设备上登录过该应用程序,因此您通常会希望对此做出适当的响应。如果失败(没有 token ),它将只返回 false,或者如果它不能生成短期 token ,它将调用 finishedWithAuth:error 并设置错误。它永远不会将用户带到另一个应用程序进行身份验证(因此是静默部分)。
您通常希望在流程的早期调用 trySilentAuthentication,以便了解用户的状态。这并不意味着您不能向他们提供其他登录选项。
在您的情况下,如果应用重新启动,您似乎希望向他们显示登录屏幕。很好,如果对用户来说有点不愉快。您可以做的是尽早运行 trySilentAuthentication,但在 finishedWithAuth:error 中,不是立即切换到下一个屏幕,而是存储 auth 对象。然后,当用户按下表格中的 Google+ 条目时,在此时翻到下一个 View 。
关于ios - 没有 Google+ 按钮的 trySilentAuthentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20741263/
我正在 iOS 中实现 Google+ 登录,我使用了这段代码,它工作正常 signIn = [GPPSignIn sharedInstance]; signIn.delegate = self; /
我是一名优秀的程序员,十分优秀!