版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhdzxc123/article/details/76465432
1.需要科学上网方式, 打开 传送门
2.当前版本为4.0.1,文档其实写得非常清楚,觉得比较乱, 在此整理一下。 主要针对需要google sign 自定义登陆按钮的内容。
3.官方demo给的是用GIDSignInButton 这个类进行登陆操作。
4.此处相当于翻一下官方文档。
5.首先是几个基本设置,
GIDSignIn *sigin = [GIDSignIn sharedInstance];
sigin.clientID = @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
sigin.delegate = self;
sigin.uiDelegate = self;
[sigin setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/drive.readonly"]];
6.自定义登陆按钮, 关键是GIDSignInDelegate, GIDSignInUIDelegate这个2个协议, 无论使用2个方式当中哪一个, 都要实现这个2个协议。此处的self可以是UIVIewController或者其子类。执行登陆操作[[GIDSignIn sharedInstance] signIn];
7.三个代理方法,都要实现。
- (void)signInWillDispatch:(GIDSignIn *)signIn error:(NSError *)error
{
NSLog(@"%@", signIn);
}
- (void)signIn:(GIDSignIn *)signIn presentViewController:(UIViewController *)viewController
{
NSLog(@"%@", signIn);
//此处的rootViewControlle为当前显示的试图控制器
[self.rootViewController presentViewController:viewController animated:YES completion:nil];
}
- (void)signIn:(GIDSignIn *)signIn dismissViewController:(UIViewController *)viewController
{
NSLog(@"%@", signIn);
[viewController dismissViewControllerAnimated:YES completion:nil];
}
8.正常弹出safirViewController ,进入登陆流程, 在- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error; 这个方法当中,就可以获取到想要的信息。
9.over, 欢迎留言讨论。