Laravel 8 Code Verifier & Code Challenge
由于这个授权准许不提供客户端密钥,开发者需要生成 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, '='), '+/', '-_');