Skip to content

mahomahoxd/react-native-login-keycloak

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-login-keycloak

This is a fork of ak1394's React-Native-Login module. It's a version that I'm planning to maintenance more than it's been with ak1394.

Documentation

Install

npm i --save react-native-login-keycloak

Usage

App configuration

Please configure Linking module, including steps for handling Universal links (This might get changed due to not being able to close the tab on leave, ending up with a lot of tabs in the browser).

Also, add the applinks: entry to the Associated Domains Capability of your app.

Imports

import Login from 'react-native-login-keycloak';

Checking if tokens are saved on the device

const gatheredTokens = await Login.getTokens();
console.log(gatheredTokens);

// Prints:
//
// { access_token: '...', refresh_token: '...', id_token: '...', ...}
// OR
// undefined

Login

const config = {
  url: 'https://<KEYCLOAK_HOST>/auth',
  realm: '<REALM NAME>',
  clientId: '<CLIENT ID>',
  redirectUri: 'https://<REDIRECT HOST>/success.html',
  appsiteUri: 'https://<APPSITE HOST>/app.html',
  kcIdpHint: 'facebook', // *optional*
};

Login.startLoginProcess(config).then(tokens => {
  console.log(tokens);
});

// Prints:
//
// { access_token: '...', refresh_token: '...', id_token: '...', ...}

Logging in by the startLoginProcess function will save it in the AsyncStorage, whereas after its been successful, getTokens will get the most recent tokens that are saved and you can then use it to authenticate against a backend.

Refreshing the token

const refreshedTokens = await Login.refreshToken();
console.log(refreshTokens);
// Prints:
//
// { access_token: '...', refresh_token: '...', id_token: '...', ...}
// OR
// undefined

Retrieving logged in user info

const loggedInUser = await Login.retrieveUserInfo();
console.log(loggedInUser);

// Prints:
//
// { sub: '...',name: '... ',preferred_username: '...',given_name: '...' }

// OR
// undefined

Logout

Login.logoutKc();

Removes stored tokens. Will also do a Keycloak call to log the user out. Returns true on logout, else false. Subsequent calls to Login.tokens() will return null.

If you got any improvements feel free to make a pull request or suggestion.

About

React Native module for lightweight universal authentication using Keycloak

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%