如何在 Nest API iOS 中成功注销后重新加载登录页面

Posted

技术标签:

【中文标题】如何在 Nest API iOS 中成功注销后重新加载登录页面【英文标题】:How to reload login page after successfully logout in Nest API iOS 【发布时间】:2017-02-16 06:58:16 【问题描述】:

我正在使用 Nest API 开发 ios 应用程序,我可以通过提供 NestWebviewloginlogout 加入我的 Nest 帐户。

但是当我logout 并再次尝试login 时,问题就来了,NestWebview直接显示Accept page 而不是login page。所以我的要求是当用户成功注销时,它应该显示login page而不是Accept Page。

对于注销,我使用 Nest Documentation 建议的以下代码行。 https://developer.nest.com/documentation/cloud/deauthorization-overview/:

curl -v -X DELETE 
"https://api.home.nest.com/oauth2/access_tokens/<access_token>"

第一次登录的工作原理。

Click on Nest login -> Open login page -> After successfully,Accept login page -> Click on Accept button -> Get device list

注销后如何工作。

Click on Nest login -> Accept login page -> Click on Accept button -> Get device list

所以注销成功后,

登录页面丢失。

他们有什么办法可以做到这一点吗?提前致谢。

【问题讨论】:

【参考方案1】:

几个月前我也遇到过类似的问题。我查询了他们,几天后我得到了 Nest 的回复。

"我相信您想知道为什么您会获得带有 撤销令牌后的“接受”按钮而不是登录页面。原因 是因为您仍然有一个有效的网络会话,因此单点登录是 尝试使用现有会话进行授权。如果您滚动到权限页面的底部,您会发现一个链接“登录到其他帐户>”此链接会清除现有会话并强制用户登录屏幕。

希望它能帮助您理解您的问题。

【讨论】:

感谢@Vivek 的回复。我会调查它并让你知道它是否对我有用..【参考方案2】:

清除 cookie 将帮助您恢复登录页面,请在注销时执行此操作。

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];

for (NSHTTPCookie *cookie in [storage cookies]) 
        [storage deleteCookie:cookie];
    

[[NSUserDefaults standardUserDefaults] synchronize];

【讨论】:

以上是关于如何在 Nest API iOS 中成功注销后重新加载登录页面的主要内容,如果未能解决你的问题,请参考以下文章

NEST Api SearchAfter 在 NEST 中返回 null 但在 Kibana 中有效

Symfony:注销后如何显示成功消息

如何在整个会话中保留 JWT 令牌直到用户注销?

调用 .disconnect() 后如何重新连接

如何在 Spring 中处理不成功的注销?

如何确定用户是不是已使用 Graph API 从 Facebook iOS 注销?