阅读(4477) (9)

Laravel 8 Code Verifier & Code Challenge

2021-07-09 12:59:34 更新

由于这个授权准许不提供客户端密钥,开发者需要生成 Code Verifier 和 Code Challenge 的组合以请求令牌。

Code Verifier 应该是一个随机字符串,长度在 43 到 128 个字符之间,包含字母、数字和 -._~,如 [RFC 7636 规范](tools.ietf.org/html/rfc7636) 中定义的那样。

Code Challenge 应该是一个 Base64 编码包含 URL 和文件名安全字符的字符串。应删除结尾的 '=' 字符,并且不应出现换行符、空白或其他附加字符。

$encoded = base64_encode(hash('sha256', $code_verifier, true));

$codeChallenge = strtr(rtrim($encoded, '='), '+/', '-_');