首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在从谷歌登录注销后导航回登录ViewController

在 iOS 应用中使用 Google 登录时,通常会使用 Google Sign-In SDK。要实现从 Google 登录注销后导航回登录视图控制器(LoginViewController),你需要执行以下步骤:

  1. 配置 Google Sign-In SDK:确保你已经正确配置了 Google Sign-In SDK,并且能够成功登录和注销。
  2. 实现注销功能:在用户注销时,调用 Google Sign-In SDK 的注销方法。
  3. 导航回登录视图控制器:在注销后,导航回登录视图控制器。

以下是一个完整的示例,展示了如何实现这些步骤。

1. 配置 Google Sign-In SDK

确保你已经按照 Google Sign-In for iOS 的官方文档配置了 Google Sign-In SDK。

2. 实现注销功能

在你的视图控制器中,添加一个注销按钮,并实现注销功能。

代码语言:javascript
复制
import UIKit
import GoogleSignIn

class HomeViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 添加注销按钮
        let signOutButton = UIButton(type: .system)
        signOutButton.setTitle("Sign Out", for: .normal)
        signOutButton.addTarget(self, action: #selector(signOut), for: .touchUpInside)
        signOutButton.frame = CGRect(x: 0, y: 0, width: 100, height: 50)
        signOutButton.center = view.center
        view.addSubview(signOutButton)
    }

    @objc func signOut() {
        GIDSignIn.sharedInstance.signOut()
        
        // 导航回登录视图控制器
        if let loginVC = storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController {
            navigationController?.setViewControllers([loginVC], animated: true)
        }
    }
}

3. 导航回登录视图控制器

在注销后,使用 navigationControllersetViewControllers 方法导航回登录视图控制器。

4. 确保登录视图控制器的 Storyboard ID

确保你的登录视图控制器在 Storyboard 中设置了一个标识符,例如 "LoginViewController"。

  1. 打开你的 Storyboard 文件。
  2. 选择登录视图控制器。
  3. 在右侧的属性检查器中,设置 "Storyboard ID" 为 "LoginViewController"。

5. 登录视图控制器示例

以下是一个简单的登录视图控制器示例:

代码语言:javascript
复制
import UIKit
import GoogleSignIn

class LoginViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 添加 Google 登录按钮
        let signInButton = GIDSignInButton()
        signInButton.center = view.center
        view.addSubview(signInButton)
        
        // 设置 GIDSignIn 代理
        GIDSignIn.sharedInstance.delegate = self
        GIDSignIn.sharedInstance.presentingViewController = self
    }
}

extension LoginViewController: GIDSignInDelegate {
    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
        if let error = error {
            print("Error signing in: \(error.localizedDescription)")
            return
        }
        
        // 登录成功,导航到主视图控制器
        if let homeVC = storyboard?.instantiateViewController(withIdentifier: "HomeViewController") as? HomeViewController {
            navigationController?.setViewControllers([homeVC], animated: true)
        }
    }
}
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

避免在Swift中使用单例

看看这个例子,我们想在ProfileViewController中显示当前登录用户的名字,并在点击按钮时将用户退出登录: class ProfileViewController: UIViewController...我们的代码现在可以安全地依赖它的模型,而且它有一个清晰的API与之交互,以便注销。一般来说,将各种单例和管理器重构为清晰分离的服务,是在应用程序的核心对象之间建立更清晰关系的好方法。...服务 作为一个例子,让我们仔细看看LogOutService可以如何实现。它也为其底层服务使用了依赖注入,并提供了一个很好的、定义清晰的API,只为做一件事——注销(logOut)。...同样的技术也可以用来改造我们应用程序中的其他核心对象,我们可能一直在以 "类似单例 "的方式使用这些对象,例如使用AppDelegate进行导航. extension UserManager: LoginService...如果你正在开发一个目前大量使用单例的应用程序,并且你一直在经历它们通常导致的一些bug,希望这篇文章能给你一些灵感,让你知道如何能以一种非破坏性的方式开始摆脱它们。

48830

Vue中的验证登录状态

Vue项目中实现用户登录及token验证 先说一下我的实现步骤: 使用easy-mock新建登录接口,模拟用户数据 使用axios请求登录接口,匹配账号和密码 账号密码验证, 拿到token,将token...注销,就清除sessionStorage里的token信息并跳转到登录页面 #使用easy-mock模拟用户数据 我用的是easy-mock,新建了一个接口,用于模拟用户数据: { "error_code...都会进入到 登录页 if (to.path === '/') { // 如果是登录页面的话,直接next() -->解决注销的循环执行bug next(); }...#注销 至此就完成了一个简单的登录状态了,浏览器关闭sessionStorage会清空的,所以当用户关闭浏览器再打开是需要重新登录的 当然也可以手动清除sessionStorage,清除动作可以做成注销登录...loginOut(){ // 注销 清除session信息 ,并返回登录页 window.sessionStorage.removeItem('data'); this.common.startHacking

2.6K10

优酷 iOS 插件化页面架构方法

(具体一点的话,可以联想成这是一些用户交互的 feature、网络请求等),在某一时机触发,接着在某调完成余下操作,最终构成了一个完整的 feature。...如何才能解决上述痛点是我们在做架构蓝图时的一个突破口。...ModuleManager 负责模块的生命周期管理和模块的关系管理,包含注册模块、注销模块、查询模块的上下级模块等接口。...七、架构实践 本章节用图来说明如何使用插件化来编写一个按钮功能。一个页面上有一个按钮并支持点击跳转。...我们可以看见点击行为拆分为跳转和统计 2 个插件,插件的职责更加单一,可复用性大大得到了提升。若遇到产品提出新的点击需求,如跳转前必须检查是否登录状态,未登录者需要先登录再继续后续的操作。

1.2K10

iOS电商类APP的研发

这样的涉及到的问题是:结果回来如何通知其他对象?...监听事件,发送message; message实现接口,自己把自己添加进msgCenter队列; msgcenter对BaseMessage进行处理,通过接口来查询message 里ID等详细信息;...目前,Model需要被改变的时候是: 1、viewController请求数据时候; 2、message发生变化的时候;(比如说登陆、注销、商店切换) 坏处:message处有各个model的代码。...model的逻辑是聚合了,但是注销的逻辑分散了,看不出来注销完干了什么事情。这个问题好像也不是问题,因为可以查看事件的监听者,看到监听了注销事件的model。...1,谁调用(不同层次之间),谁负责检查参数;比如orderMessage需要用户登录,那么调用orderMessage的时候,就必须保证已经登录

2.7K100

优酷iOS插件化页面架构方法

(具体一点的话,可以联想成这是一些用户交互的 feature、网络请求等),在某一时机触发,接着在某调完成余下操作,最终构成了一个完整的 feature。...如何才能解决上述痛点是我们在做架构蓝图时的一个突破口。...ModuleManager 负责模块的生命周期管理和模块的关系管理,包含注册模块、注销模块、查询模块的上下级模块等接口。...七、架构实践 本章节用图来说明如何使用插件化来编写一个按钮功能。一个页面上有一个按钮并支持点击跳转。...我们可以看见点击行为拆分为跳转和统计 2 个插件,插件的职责更加单一,可复用性大大得到了提升。若遇到产品提出新的点击需求,如跳转前必须检查是否登录状态,未登录者需要先登录再继续后续的操作。

1.5K51

Swift-MVVM 简单演练(一)

---- 这篇文章都写啥 自定义NavgationBar 抽取便利构造函数 初步的下拉刷新/上拉加载的简单处理 未登录逻辑的处理 苹果原生布局NSLayoutConstraint 如何用VFL布局(...Push 出控制器,底部 TabBar 隐藏/显示问题 在导航控制器的基类里面重写一下push方法 判断如果不是根控制器,那么push的时候就隐藏BottomBar 注意调用super.pushViewController...reloadData() } } ---- 未登录视图显示(访客视图) 现实中经常会遇到一些临时增加的需求,比如登录显示的是一种视图,未登录又显示另外一种视图,如果你的公司是面向公司内部的APP...而在未登录状态下,导航栏上面的按钮都是显示注册和登录。...登录之后才显示别的,因此,我们可以将HQBaseViewController中的setupUI方法设置成fileprivate不让外界访问到,并且将setupTableView设置成外界可以访问,如果需要在登录的控制器里面显示所需的样式

10.3K51

Swift-MVVM 简单演练(二)

但是,其实我们没有必要做到,用户未登录就直接不开启Timer,因为不管是否登录都开启定时器,如果用户从未登录登录状态以后,就可以不用再考虑登录再重新开启Timer的问题了。...\(n)") } 登录 因为登录控制器我采用的是模态视图,直接模态的话没有导航栏,不好处理返回,所以这里建议嵌套一个导航控制器比较好。...FileManager.default.removeItem(atPath: path) } 到此为止,可以做到登录成功,并且保存好用户信息token等,但是登录完成调还没有做,下一步我们处理登录的完成调...处理登录完成调 之前这里并没有完成的调,现在增加一个完成调,使其处理登录成功以后的逻辑 // MARK: - 请求`Token` extension HQNetWorkManager {...登录成功 \(n)") // 注销通知,因为重新执行`viewDidLoad()`会再次注册通知 NotificationCenter.default.removeObserver

2.3K40

六种Web身份验证方法比较和Flask示例代码

该软件包负责登录注销,并且可以记住用户一段时间。...,并相应地授予访问权限 TOTP的工作原理: 客户端发送用户名和密码 凭据验证,服务器使用随机生成的种子生成随机代码,将种子存储在服务器端,并将代码发送到受信任的系统 用户在受信任的系统上获取代码,然后将其输入...流程 您访问的网站需要您登录。您导航登录页面,并看到一个名为“使用Google登录”的按钮。您点击该按钮,它会将您带到Google登录页面。通过身份验证,系统会将您重定向自动登录的网站。...登录,您可以导航到网站内的下载服务,该服务可让您将大文件直接下载到Google云端硬盘。网站如何访问您的 Google 云端硬盘?这就是OAuth发挥作用的地方。...name__ == "__main__": app.run() 资源 OAuth 和 OpenID Connect 的图解指南 OAuth 2.0 和 OpenID Connect 简介 使用谷歌登录创建一个烧瓶应用程序

7.2K40

如何通过 ASWebAuthenticationSession 获取身份验证 code 码

前言 ---- 项目中需要实现 GitHub、Google、Apple 登录,实现第三方登录方案有 3 种: 集成第三方一键登录 分别集成 GitHub、Google、Apple 登录 SDK 不集成...网站登录身份验证逻辑: 一些网站作为一种服务提供了一种用于验证用户身份的安全机制。 当用户导航到站点的身份验证URL时,站点将向用户提供一个表单以收集凭据。...验证凭据,站点通常使用自定义方案将用户的浏览器重定向到指示身份验证尝试结果的URL。 2...." 重定向标识:identity_provider = "配置的 URL Types" 相应类型:response_type = "CODE" 客户端 ID:client_id = "服务器配置" 调中的...告诉代理应该在哪个 window 展示授权界面给用户 #pragma mark - ASAuthorizationControllerPresentationContextProviding extension ViewController

1.6K20

使用 Jenkins X、Kubernetes 和 Spring Boot 实现 CICD

将 token 值复制并粘贴控制台。 在安装完成喝杯咖啡、饮料或做一些俯卧撑。可能需要几分钟。 下一步是将 API token 从 Jenkins 复制到你的控制台。...在 Okta 中为 Spring Boot 应用程序创建一个 Web 应用程序 完成设置过程登录到你的帐户并导航到 Applications > Add Application。...单击 Add Attribute 并使用以下值: 显示名称: Holdings 变量名: holdings 描述: Cryptocurrency Holdings 执行这些步骤,你应该能够导航到 http...://localhost:8080, 并在运行以下命令登录: cd holdings-api ....对于这个特定的应用程序,它们将 http://localhost:8080/login 用于登录,http://localhost:8080 用于注销。当您进入生产环境时,URL通常也是众所周知的。

4.2K10

完美实现SpringBoot+Angular普通登录

在这个登录功能中,后台唯一的作用就是只做数据验证。当用户登录时,前台向后台发起用户名、密码验证的请求,如果后台验证成功,就返回真,否则返回假。当前台接收到返回值,再判断用户是否登录成功。...一开始,可以保存在app组件中,然后V层使用ngIf直接获取C层变量就可以获取登录状态,但是依赖登录状态的 登录状态储存在前台的服务层的一个变量中,所有的组件在渲染前都去找这个登录服务要数据,如果用户处于登录状态...登录注销动作 初始化时,登录状态为假。登录时,如果后台返回值是真,就把登录状态变量改为真,否则不变。注销是,只需把登录状态改为假,即可。 二、详解登录注销过程 登录 ?...把页面返回给浏览器 注销 ?...图片.png 浏览器触发导航栏C层Logout方法 导航栏调用M层setIsLogin(flase),把登录状态改成0 M层返回 把登录页返回给浏览器 三、合并图片 ?

1.6K10

iOS开发--一步步教你彻底学会『iOS应用间相互跳转』

应用间相互跳转应用场景 使用第三方用户登录,跳转到需授权的App。如QQ登录,微信登录等。 需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名、密码"。...显示位置、地图导航,跳转到地图应用。 使用系统内置程序,跳转到打电话、发短信、发邮件、Safari打开网页等内置App中。 那么我们如何实现应用间的相互跳转呢?先来看下原理。 3....具体如何做呢? 首先我们先来为App-B搭建两个页面Page1和Page2。...这里用导航控制器Push两个ViewController,通过Storyboard Segue设置两个ViewController的标识符绑定,分别为"homeToPage1"和"homeToPage2...(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { // 1.获取导航栏控制器

1.3K30

关于Web验证的几种方法

用户在受信任的系统上获取代码,然后将其输入 Web 应用 服务器使用存储的种子验证代码,确保其未过期,并相应地授予访问权限 谷歌身份验证器、微软身份验证器和 FreeOTP 等 OTP 代理如何工作...它们用于实现社交登录,一种单点登录(SSO)形式。社交登录使用来自诸如 Facebook、Twitter 或谷歌等社交网络服务的现有信息登录到第三方网站,而不是创建一个专用于该网站的新登录帐户。...流程 你访问的网站需要登录。你转到登录页面,然后看到一个名为“使用谷歌登录”的按钮。单击该按钮,它将带你到谷歌登录页面。通过身份验证,你将被重定向自动登录的网站。...最著名的 OpenID 提供方有谷歌、Facebook、Twitter 和 GitHub。 登录,你可以转到网站上的下载服务,该服务可让你直接将大文件下载到谷歌云端硬盘。...网站如何访问你的 Google 云端硬盘?这里就会用到 OAuth。你可以授予访问另一个网站上资源的权限。在这里,你授予的就是写入谷歌云端硬盘的访问权限。 优点 提高安全性。

3.8K30

安防监控系统磁盘阵列视频监控EasyCVR平台微信推送步骤大公开

1、首先登录智能分析网关,登录完成,在导航栏点击配置中心,在基础配置中点击消息推送,打开微信推送开关。...2、开启微信推送,会有一个默认配置的开关,开启这个开关,表示用我们的微信公众号进行推送;注意:若用户有自己的公众号,则应关闭默认配置。然后根据页面显示的表单,填写相应的微信公众号的信息。...3、调域名填写当前页面的ip,推送间隔则表示分析结果推送的时间间隔,单位为秒;4、随后显示下图两个二维码,第一个二维码是关注微信公众号的二维码,可自由替换,替换方式如下:a、将微信提供的二维码放在服务安装目录下的...b、第二个二维码是根据上面表单填写的信息自动生成的二维码,建议在配置完成并且保存,刷新一下页面。...6、如果在扫第二个码,提示请重新登录的信息,则需要先在EasyCVR上先注销登录,再重新登录,再扫一次即可。

21210
领券