Este es mi código php. No se donde me equivoque. Estoy dando código completo hasta ahora. Estoy ejecutando este código en localhost. Se crea un menú en el backend de administración.
Tampoco estoy seguro de la forma en que almacené las claves públicas y privadas en las variables de php.
<?php
/*
Plugin Name: JWT token signed using RS256 by email
Plugin URI:
Description: a plugin which can provide JWT token signed using RS256. afdf form to take email as input and show the JWT token on screen.
Version: 1.0
Author: Mayur Borse
*/
require_once 'php-jwt-main/src/BeforeValidException.php';
require_once 'php-jwt-main/src/JWT.php';
require_once 'php-jwt-main/src/Key.php';
require_once 'php-jwt-main/src/ExpiredException.php';
require_once 'php-jwt-main/src/CachedKeySet.php';
use FirebaseJWTJWT;
use FirebaseJWTKey;
$privateKey = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC8kGa1pSjbSYZVebtTRBLxBz5H4i2p/llLCrEeQhta5kaQu/Rn
vuER4W8oDH3+3iuIYW4VQAzyqFpwuzjkDI+17t5t0tyazyZ8JXw+KgXTxldMPEL9
5+qVhgXvwtihXC1c5oGbRlEDvDF6Sa53rcFVsYJ4ehde/zUxo6UvS7UrBQIDAQAB
AoGAb/MXV46XxCFRxNuB8LyAtmLDgi/xRnTAlMHjSACddwkyKem8//8eZtw9fzxz
bWZ/1/doQOuHBGYZU8aDzzj59FZ78dyzNFoF91hbvZKkg+6wGyd/LrGVEB+Xre0J
Nil0GReM2AHDNZUYRv+HYJPIOrB0CRczLQsgFJ8K6aAD6F0CQQDzbpjYdx10qgK1
cP59UHiHjPZYC0loEsk7s+hUmT3QHerAQJMZWC11Qrn2N+ybwwNblDKv+s5qgMQ5
5tNoQ9IfAkEAxkyffU6ythpg/H0Ixe1I2rd0GbF05biIzO/i77Det3n4YsJVlDck
ZkcvY3SK2iRIL4c9yY6hlIhs+K9wXTtGWwJBAO9Dskl48mO7woPR9uD22jDpNSwe
k90OMepTjzSvlhjbfuPN1IdhqvSJTDychRwn1kIJ7LQZgQ8fVz9OCFZ/6qMCQGOb
qaGwHmUK6xzpUbbacnYrIM6nLSkXgOAwv7XXCojvY614ILTK3iXiLBOxPu5Eu13k
eUz9sHyD6vkgZzjtxXECQAkp4Xerf5TGfQXGXhxIX52yH+N2LtujCdkQZjXAsGdm
B2zNzvrlgRmgBrklMTrMYgm1NPcW+bRLGcwgW2PTvNM=
-----END RSA PRIVATE KEY-----
EOD;
$publicKey = <<<EOD
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8kGa1pSjbSYZVebtTRBLxBz5H
4i2p/llLCrEeQhta5kaQu/RnvuER4W8oDH3+3iuIYW4VQAzyqFpwuzjkDI+17t5t
0tyazyZ8JXw+KgXTxldMPEL95+qVhgXvwtihXC1c5oGbRlEDvDF6Sa53rcFVsYJ4
ehde/zUxo6UvS7UrBQIDAQAB
-----END PUBLIC KEY-----
EOD;
// print_r($decoded);
function JwtForm_menu() {
add_menu_page(
'JwtForm',
'JwtForm',
'manage_options',
'JwtForm-slug','JwtForm_content','',2);
}
add_action('admin_menu', 'JwtForm_menu');
function JwtForm_content() {
?>
<h1>
JWT token signed using RS256
</h1>
<body>
<form method="POST">
email : <input type="email" name="emailname" id="emailid" /><br>
<?php
$emailvar = $_POST['emailname'];
$payload = [
'iss' => 'http://example.org',
'email' => '$emailvar',
'aud' => 'http://example.com',
'iat' => 1356999524,
'nbf' => 1357000000
];
$jwt = JWT::encode($payload, $privateKey, 'HS256');
// $decoded = JWT::decode($jwt, new Key($publicKey, 'HS256'));
?>
<input type="button" onClick="jwtf()" Value="JWT token" />
</form>
<p>The Result is : <br>
<span id = "result"></span>
</p>
</body>
<script>
function jwtf(){
// num1 = document.getElementById("email").value;
document.getElementById("result").innerHTML = $jwt;
}
</script>
<?php
}
?>
En wordpress este es el error que se muestra:
Error fatal: InvalidArgumentException no detectada: la clave debe ser una cadena al usar hmac en C:xampphtdocswptestwp-contentpluginsJwtEmailphp-jwt-mainsrcJWT.php:232 Rastreo de pila:
.