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

鲲圭插件登录方式完善

鲲圭插件依赖鲲圭的整个登录机制,前端页面共用一个登录入口,收集登录信息。登录是所有插件的第一步,所有这个功能是非常关键的。

之前的缺陷

之前的登录模式,是在当前dom中插入iframe来实现弹窗,通过插件可以兼容浏览器的cookies的变化,当选定的特定cookie变化了说明有新增,实现把cookie-token写入到应用中来实现登录。这个模式其实还可以,但是有一些问题。比如:1.

这样的时候,你新建空标签的时候或者说是一些不是网页的标签的时候,你是无法实现弹窗的。

2.

在一些特殊的页面,也是不能弹窗的。对于火狐来讲就是在其扩展的安装市场网页,对于谷歌来讲也是其扩展的安装市场网页。当然也有可能会有其他页面。

3.微信登录机制问题,如果是普通的手机验证码登录,或者只是账户密码登录模式,直接做在应用的popup弹窗里也没问题。但是微信登录是需要扫描然后跳转回调的,这就导致只能在外部网页里实现。而且实际上跳转的体验很差,callback为原网页url但是跳转回来实际上很影响用户体验,一些网页可能有一些异步加载,一些网页也有可能url后面的参数是临时的,你跳转了再跳回来就不能访问了。

完善登录机制

既然直接在页面建立iframe实现登录不是很好那么只能找其他方法。

chrome.windows.create(..),该方法类似于open方法,只不过对于插件来讲功能更强而且不会被浏览器屏蔽掉。Create支持2个参数,第一个参数接受一个对象,里面传入窗口的属性信息,第二个参数是回调函数,接受返回的窗口的信息。它有一个参数type可以实现一个小弹窗类似这样:

这样的好处就是完全与当前页面脱离,无论在哪里都实现弹窗登录,并且不必在意回调。Create方法的回调函数里面可以返回打开窗口的所有信息,里面的id是我们所需要的,把这个id保存起来。当cookies更新的时候,利用chrome.windows.remove(id)来关闭窗口,并且通知当前的popup,chrome.runtime.sendMessage来发送信息,更新页面。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200514A0LS3400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券