gpt4 book ai didi

dart - 如何在 Dart 中解码 token

转载 作者:行者123 更新时间:2023-12-01 03:11:27 25 4
gpt4 key购买 nike

任何人都可以解释如何使用 dart 解码 json 中的 token 。

我用下面的代码在android中完成了。但是如何在 Dart 中解码一个 token 。

public class JWTUtils {

public static String decoded(String JWTEncoded) throws Exception {
String encode = "";
try {
String[] split = JWTEncoded.split("\\.");
Log.d("JWT_DECODED", "Header: " + getJson(split[0]));
encode = getJson(split[1]);
} catch (UnsupportedEncodingException e) {
//Error
}
return encode;
}

private static String getJson(String strEncoded) throws UnsupportedEncodingException{
byte[] decodedBytes = Base64.decode(strEncoded, Base64.URL_SAFE);
return new String(decodedBytes, "UTF-8");
}
}

字符串编码数据 = JWTUtils.decoded(token);

最佳答案

如果您有兴趣获得 token 的公共(public)部分,基本上您必须将 token 拆分为“。”并用 base64 解码第二部分

var text = token.split('.')[1];
var decoded = base64.decode(text);
return utf8.decode(decoded);


import 'dart:convert';

Map<String, dynamic> parseJwt(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;
}

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));
}

关于dart - 如何在 Dart 中解码 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com