reactnative rn模块和native模块cookie共用问题

react native cookie处理

1. 工程环境

Native-android + rn :原生和rn混合工程

rn-version:0.55.4

android:~

2. cookie验证

参考这篇文章:React Native Cookie使用指南

主要问题点:

1:rn-cookie会自动持久化,接口请求时候自动带上

2:工程cookie同步 - native端的登录态需要共享给rn接口使用 : cookie同步

  • native如何获取cookie ~ 略
  • native如何传递cookie给rn ~ 略
  • rn如何设置cookie ~ 如下:

2.1. 三方工具

react-native-cookiemanager

native拿到cookie 》 传递给rn 》 rn:CookieManager.setCookie(options)

2.2. 原生设置

上述第三方cookie库,可以看源码:CookieManager,其实是回调到native去处理的。所以,自己手动设置实践是可行的

            List<Cookie> cookieList = cookieJar.loadForRequest(HttpUrl.parse("https://xxx"));
            for (int i = 0; i < cookieList.size(); i++) {
                Cookie cookie = cookieList.get(i);
                Map map = new HashMap();
                map.put("name", cookie.name());
                map.put("value", cookie.value());
                map.put("domain", cookie.domain());
                map.put("path", cookie.path());
                map.put("expiration", String.valueOf(cookie.expiresAt()));
                map.put("origin", Uri.parse("https://xxx").getHost());
                list.add(map);

                //第一种方式,native端直接设置
                CookieManager.getInstance().setCookie(MapUtil.getStringFromMap(map, "origin")
                        , MapUtil.getStringFromMap(map, "name") + "=" + MapUtil.getStringFromMap(map, "value") + ";"
                        + "path" + "=" + MapUtil.getStringFromMap(map, "path") + ";"
                        + "expiration" + "=" + MapUtil.getStringFromMap(map, "expiration") + ";"
                        + "domain" + "=" + MapUtil.getStringFromMap(map, "domain"));
            }

2.3. 使用自己的OkHttpClient

上述两种方式都是需要额外开发的,比较麻烦,涉及几个问题,实现起来比较繁琐:

  • native端cookie刷新
  • rn端cookie回传

后来发现:fetch用的RCTNetworking,RCTNetworking又是基于OkHttp做的,而且找到有方法自定义OkHttpClient,试着调用我们自己的额RemoteServiceUtil里的创建OkHttpClient的方法给他client这样,cookiejar是单例,可以共用,这样cookie就一套了

参考这篇文章:react-native 0.43 后如何使用自己的OkHttpClient

实践是可行的

实践遇到的问题

com.franmontiel.persistentcookiejar.PersistentCookieJar cannot be cast to com.facebook.react.modules.network.CookieJarContainer

这个是表示原工程里的RemoteServiceUtil提供的OkHttpClient中cookiejar类型与rn所需要的类型不匹配。

因为

PersistentCookieJar implement ClearableCookieJar,而rn需要的是ReactCookieJarContainer implement CookieJarContainer

解决:

1:原工程中cookie持久化用的也是三方库:PersistentCookieJar

2:修改三方库源码:ClearableCookieJar extends CookieJarContainer

3. rn端webview组件cookie相关

  • 接口请求
    • 调原生
    • 调rn
  • web
    • 基于native-webview封装组件
    • 跳转native-WebViewActivity加载

其他相关资料

个人rn相关专题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,646评论 4 366
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,979评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,391评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,356评论 0 215
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,740评论 3 293
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,836评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,022评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,764评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,487评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,728评论 2 252
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,200评论 1 263
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,548评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,217评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,134评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,921评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,919评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,766评论 2 274

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,585评论 25 707
  • 1 基础开发技巧 1.1 AppRegistry AppRegistry模块则是用来告知React Native哪...
    Kevin_Junbaozi阅读 1,337评论 0 2
  • 有些人喜欢找三五朋友一通乱侃,六七杯小酒下肚,自在的很;也有人独来独往,好不逍遥;还有人偏好故作风雅,泡点花茶,...
    三水一草木阅读 339评论 0 1
  • 2017-07-21 原文:做局也是逼上梁山。正如生殖崇拜是因为死人太多,吓着了;请神吃饭则因为饥肠辘辘,饿坏了。...
    言离阅读 700评论 0 0
  • 【转】 关于癫痫 关于我为何会成为芳疗师?~ 关于我在推广的精油 女儿癫痫8年症状得改善~Grace(17岁)使用...
    周琦的小册子阅读 5,052评论 1 1