Skip to content

Latest commit

History

79 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

react-native-cookies

Cookie manager for react native.

npm versionnpm downloadsGitHub license

Looking for Maintainers

I no longer use this library and I'm looking for maintainer(s) to take full control over the development and release cycle.

Installation

yarn add react-native-cookies

Linking

Automatic (recommended)

react-native link react-native-cookies

Manual

If automatic linking does not work, you can manually link this library by following the instructions below:

iOS
  1. Open your project in Xcode, right click on Libraries and click Add Files to "Your Project Name" Look under node_modules/react-native-cookies/ios and add RNCookieManagerIOS.xcodeproj.
  2. Add libRNCookieManagerIOS.a to `Build Phases -> Link Binary With Libraries.
  3. Clean and rebuild your project
Android

Run react-native link to link the react-native-cookies library.

Or if you have trouble, make the following additions to the given files manually:

android/settings.gradle

include ':react-native-cookies'
project(':react-native-cookies').projectDir =newFile(rootProject.projectDir, '../node_modules/react-native-cookies/android')

android/app/build.gradle

dependencies {
...
compile project(':react-native-cookies')
}

MainApplication.java

On top, where imports are:

importcom.psykar.cookiemanager.CookieManagerPackage;

Add the CookieManagerPackage class to your list of exported packages.

@OverrideprotectedList<ReactPackage> getPackages() {
returnArrays.asList(
newMainReactPackage(),
newCookieManagerPackage()
);
}

Usage

importCookieManagerfrom'react-native-cookies';// set a cookie (IOS ONLY)CookieManager.set({name: 'myCookie',value: 'myValue',domain: 'some domain',origin: 'some origin',path: '/',version: '1',expiration: '2015-05-30T12:30:00.00-05:00'}).then((res)=>{console.log('CookieManager.set =>',res);});// Set cookies from a response header// This allows you to put the full string provided by a server's Set-Cookie // response header directly into the cookie store.CookieManager.setFromResponse('http://example.com','user_session=abcdefg; path=/; expires=Thu, 1 Jan 2030 00:00:00 -0000; secure; HttpOnly').then((res)=>{// `res` will be true or false depending on success.console.log('CookieManager.setFromResponse =>',res);});// Get cookies as a request header stringCookieManager.get('http://example.com').then((res)=>{console.log('CookieManager.get =>',res);// => 'user_session=abcdefg; path=/;'});// list cookies (IOS ONLY)CookieManager.getAll().then((res)=>{console.log('CookieManager.getAll =>',res);});// clear cookiesCookieManager.clearAll().then((res)=>{console.log('CookieManager.clearAll =>',res);});// clear a specific cookie by its name (IOS ONLY)CookieManager.clearByName('cookie_name').then((res)=>{console.log('CookieManager.clearByName =>',res);});

WebKit-Support (iOS only)

React Native comes with a WebView component, which uses UIWebView on iOS. Introduced in iOS 8 Apple implemented the WebKit-Support with all the performance boost.

To use this it's required to use a special implementation of the WebView component (e.g. react-native-wkwebview).

This special implementation of the WebView component stores the cookies not in NSHTTPCookieStorage anymore. The new cookie-storage is WKHTTPCookieStore and implementes a differnt interface.

To use this CookieManager with WebKit-Support we extended the interface with the attribute useWebKit (a boolean value, default: FASLE) for the following methods:

MethodWebKit-SupportMethod-Signature
getAllYesCookieManager.getAll(useWebKit:boolean)
clearAllYesCookieManager.clearAll(useWebKit:boolean)
getYesCookieManager.get(url:string, useWebKit:boolean)
setYesCookieManager.set(cookie:object, useWebKit:boolean)
Usage
importCookieManagerfrom'react-native-cookies';constuseWebKit=true;// list cookies (IOS ONLY)CookieManager.getAll(useWebKit).then((res)=>{console.log('CookieManager.getAll from webkit-view =>',res);});// clear cookiesCookieManager.clearAll(useWebKit).then((res)=>{console.log('CookieManager.clearAll from webkit-view =>',res);});// Get cookies as a request header stringCookieManager.get('http://example.com',useWebKit).then((res)=>{console.log('CookieManager.get from webkit-view =>',res);// => 'user_session=abcdefg; path=/;'});// set a cookie (IOS ONLY)constnewCookie: ={name: 'myCookie',value: 'myValue',domain: 'some domain',origin: 'some origin',path: '/',version: '1',expiration: '2015-05-30T12:30:00.00-05:00'};CookieManager.set(newCookie,useWebKit).then((res)=>{console.log('CookieManager.set from webkit-view =>',res);});

TODO

  • Proper getAll dictionary by domain
  • Proper error handling
  • Anything else?

PR's welcome!

About

Cookie manager for React Native

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages