在 Postman v11.2.14-canary01 中处理新的
HTTP request
时,转到 Authorization 选项卡并为 Code Challenge Method选择
SHA-256
并放置
6b890b254542c9de4603278153e1b127d21730d46ac2620e6e35514c
在 Code Verifier 字段中,我可以看到 https 调用显示:
code_challenge=EKhdok_1ZKtBrevixgZqXxEHxn5pQjKkFA4bTVOmyH4
我正在尝试用 Java 重新创建它。
String text = "6b890b254542c9de4603278153e1b127d21730d46ac2620e6e35514c";
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hash = messageDigest.digest(text.getBytes(StandardCharsets.UTF_8));
Base64.Encoder encoder = Base64.getEncoder();
String value = encoder.encodeToString(hash);
System.out.println("Result [" + value + "]");
结果
Result [EKhdok/1ZKtBrevixgZqXxEHxn5pQjKkFA4bTVOmyH4=]
结果不匹配。 应该使用哪些细节来“清理”结果?
它使用 Base64 URL 编码。改变
Base64.Encoder encoder = Base64.getEncoder();
到
Base64.Encoder encoder = Base64.getUrlEncoder();
通过这一改变,我得到了(如预期的那样)
Result [EKhdok_1ZKtBrevixgZqXxEHxn5pQjKkFA4bTVOmyH4=]