Skip to content

Instantly share code, notes, and snippets.

@prafullakumar
Created May 14, 2020 01:49
Show Gist options
  • Save prafullakumar/daa557666a3c0fe70dfc5f71afc5ebbb to your computer and use it in GitHub Desktop.
Save prafullakumar/daa557666a3c0fe70dfc5f71afc5ebbb to your computer and use it in GitHub Desktop.
import 'dart:convert';
Map<String, dynamic> parseJwtPayLoad(String token) {
final parts = token.split('.');
if (parts.length != 3) {
throw Exception('invalid token');
}
final payload = _decodeBase64(parts[1]);
final payloadMap = json.decode(payload);
if (payloadMap is! Map<String, dynamic>) {
throw Exception('invalid payload');
}
return payloadMap;
}
Map<String, dynamic> parseJwtHeader(String token) {
final parts = token.split('.');
if (parts.length != 3) {
throw Exception('invalid token');
}
final payload = _decodeBase64(parts[0]);
final payloadMap = json.decode(payload);
if (payloadMap is! Map<String, dynamic>) {
throw Exception('invalid payload');
}
return payloadMap;
}
String _decodeBase64(String str) {
String output = str.replaceAll('-', '+').replaceAll('_', '/');
switch (output.length % 4) {
case 0:
break;
case 2:
output += '==';
break;
case 3:
output += '=';
break;
default:
throw Exception('Illegal base64url string!"');
}
return utf8.decode(base64Url.decode(output));
}
//String
void main() {
String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
print(parseJwtHeader(token));
print(parseJwtPayLoad(token));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment