繁体   English   中英

GoogleSignIn (iOS) getTokensWithHandler 在令牌过期后不会调用其关闭

GoogleSignIn (iOS) getTokensWithHandler doesn't call its closure after token has expired

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在将 Google Sign-In 5.0.2 与 Swift 4 iOS 应用程序一起使用。 这是我获取当前 id 令牌的代码:

public static func getJwtToken(completion: @escaping (Result<String, Error>) -> Void) {
        assert(Config.isAuthEnabled())
                
        GIDSignIn.sharedInstance()?.currentUser?.authentication.getTokensWithHandler({ gidAuth, error in
            if let error = error {
                completion(.failure(error))
            } else if let token = gidAuth?.idToken {
                completion(.success(token))
            } else {
                assertionFailure("shouldn't have come here")
            }
        })
    }

当我启动应用程序时,这很好用。 但是如果我让应用程序运行一个小时(让 id 令牌过期),那么下次调用 getTokensWithHandler 时,它不会调用我的闭包。 对 getTokensWithHandler 的后续调用将再次调用我的闭包。

我希望它的行为一致,以便始终调用我的闭包,即使令牌需要刷新。

任何人对我需要做什么才能实现这一目标有任何想法吗?

1 个回复

在花了更多时间解决这个问题后,我找到了这个问题的答案。

我的问题是我试图将 Google SDK 的闭包破解为同步,而不是让它在准备好时调用闭包。 如果我让程序自然流动而不是在我期望它被调用时试图让它调用闭包,那么我声称从未调用过它的闭包的函数调用就会调用它。 我在调用堆栈中的某处使用了一个信号量,它一直在等待直到调用闭包,我只需要停止对 Google 的 SDK 何时执行其工作进行假设。

我仍在努力适应这种异步优先的 Swift 范式。

1 SAS令牌过期后关闭Azure Servicebus订阅

我已经使用SAS令牌创建了一个servicebus主题订阅。 SAS令牌在5分钟后过期。 我注册了一个要在消息上调用的函数,另一个在异常上调用的函数。 SAS到期后,异常函数将反复调用。 我希望仅使用一次新的SAS令牌重新创建订阅时调用一次。 请帮助解决此问题。 ...

3 reCaptcha小部件不会过期,永远不会调用过期的回调

我无法在我的ajax联系表单中集成reCaptcha。 只有在用户完成挑战后的前2分钟才有效。 ReCaptcha在2分钟后过期。 问题是小部件是完整的,没有像“会话过期。再次完成挑战”。 用户无法执行任何操作,但会重新加载页面。 此外,不调用过期回调(显然,因为小部件不会过期)。 ...

4 APNS令牌-iOS沙盒令牌会过期吗?

出于好奇,iOS的沙箱推送通知会过期吗? 我问的原因是,昨天我的推送通知在我的设备上运行良好,从那时起我一直没有更改代码。 今天,我想推送另一个通知以进行进一步测试,突然之间,没有收到通知。 我必须重新安装该应用程序并获取另一个令牌才能运行。 那么,沙盒令牌会过期吗?或者上班时可能会 ...

5 令牌过期后的部分认证

我对Oauth还是相当陌生,我想知道是否任何Oauth流都支持特定的流。 我希望能够识别用户并允许该用户执行不安全的操作,即使他们的令牌已过期也是如此。 仅当用户请求执行安全操作时,才被迫重新认证。 我目前看不到有任何流程可以支持这一点。 我想到了以下使用刷新令牌的解决方案,但不确定 ...

6 AAD令牌过期后如何刷新?

我正在开发一个 SDK,我们将遥测(1000 个事件/分钟)发送到 Microsoft 拥有的摄取服务。(SDK 由托管在 Azure VMS 或应用服务上的 web 应用程序使用)摄取服务目前支持使用托管身份(两个系统)的身份验证和用户分配)。 我的想法是依赖 Azure Identity SDK ...

10 按下后不会调用onActivityResult

我正在开发一个从活动到子活动的应用程序,当按下后退按钮时,它将返回到具有两个数据的父活动,即网格中的行号和列号。 值将存储在变量中,但是当按下后退按钮时,不会调用onActivityResult方法。 父级活动:onClick方法 父活动:onActivityResult方法 ...

2019-03-06 14:15:36 1 40   android
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM