您可以添加自己的按钮,而不是使用谷歌登录按钮
Objective C Version
1) 将自己的按钮添加到故事板中
2) 将操作拖动到viewController中
- (IBAction)googlePlusButtonTouchUpInside:(id)sender {
[GIDSignIn sharedInstance].delegate = self;
[GIDSignIn sharedInstance].uiDelegate = self;
[[GIDSignIn sharedInstance] signIn];
}
3) 处理委托方法
#pragma mark - Google SignIn Delegate
- (void)signInWillDispatch:(GIDSignIn *)signIn error:(NSError *)error {
}
//提供一个提示用户登录谷歌的视图
- (void)signIn:(GIDSignIn *)signIn presentViewController:(UIViewController *)viewController
{
[self presentViewController:viewController animated:YES completion:nil];
}
//取消"使用谷歌登录"视图
- (void)signIn:(GIDSignIn *)signIn dismissViewController:(UIViewController *)viewController {
[self dismissViewControllerAnimated:YES completion:nil];
}
//已完成登录
- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user
withError:(NSError *)error {
//user signed in
//get user data in "user" (GIDGoogleUser object)
}
Swift 4 Version
在Swift中,确保你已经添加了briding头,因为库是用objective C编写的
1) 将自己的按钮添加到故事板中
2) 将操作拖动到viewController中
@IBAction func googlePlusButtonTouchUpInside(sender: AnyObject) {
GIDSignIn.sharedInstance().delegate=self
GIDSignIn.sharedInstance().uiDelegate=self
GIDSignIn.sharedInstance().signIn()
}
3) 处理委托方法
//MARK:Google SignIn Delegate
func signInWillDispatch(_ signIn: GIDSignIn!, error: Error!) {
}
//提供一个提示用户登录谷歌的视图
func signIn(_ signIn: GIDSignIn!,
presentViewController viewController: UIViewController!) {
self.present(viewController, animated: true, completion: nil)
}
//取消"使用谷歌登录"视图
func signIn(_ signIn: GIDSignIn!,
dismissViewController viewController: UIViewController!) {
self.dismiss(animated: true, completion: nil)
}
//已完成登录
public func signIn(_ signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
withError error: Error!) {
if (error == nil) {
// Perform any operations on signed in user here.
let userId = user.userID // For client-side use only!
let idToken = user.authentication.idToken // Safe to send to the server
let fullName = user.profile.name
let givenName = user.profile.givenName
let familyName = user.profile.familyName
let email = user.profile.email
// ...
} else {
print("\(error.localized)")
}
}
编辑:以下是使用自定义按钮Google Doc reference的参考/证据
在这些示例中,视图控制器是