Как получить значение формы электронной почты JWT - PullRequest
0 голосов
/ 07 марта 2019

Я использую диалоговое окно для создания помощника таблицы бронирования. Чтобы получить информацию от пользователя, ему нужно войти в систему с помощью Google, чтобы по окончании разговора я принял значение uderId пользователя. Для этого я использую библиотеку jose-php так:

header( 'Access-Control-Allow-Headers: *' );
header( 'Access-Control-Allow-Origin: *' );
header( "Access-Control-Allow-Credentials: true" );
header( 'Content-Type: application/json' );

include('../phpseclib/Net/SSH2.php');
include('../JOSE/JWT.php');
include('../JOSE/URLSafeBase64.php');
$jwt_string = 'userIdtoken';
$jwt = JOSE_JWT::decode($jwt_string);
echo $jwt['JOSE_JWT']['Claims']['email'];

проблема в том, что я получаю сообщение об ошибке при печати значения электронной почты! Как я мог получить это?

$ jwt value результат так:

JOSE_JWT Object
(
    [header] => Array
        (
            [alg] => RS256
            [kid] => cf022a49e9786148ad0e379cc854844e36c3edc1
            [typ] => JWT
        )

    [claims] => Array
        (
            [iss] => https://accounts.google.com
            [nbf] => 1551435957967
            [aud] => 284549458086-fdoluk70pqkcuh8vj4tj1dou15v444tiua.apps.googleusercontent.com
            [sub] => 1092379345381822971290339
            [email] => dasdasddas@gmail.com
            [email_verified] => 1
            [name] => frank rossi
            [picture] => https://lh4.googleusercontent.com/-79eVyjn_YU8/AAAAAAAAAAI/AAAAAAAAPBs/uvq_fruLiB0/s96-c/photo.jpg
            [given_name] => Federico
            [family_name] => Idsfdsfdsf
            [iat] => 1545351958267
            [exp] => 155143534961867
            [jti] => 428254345532cddf49dec17d24ace2e6f45f8af4b14b2
        )

    [signature] => 'somthing'
    [raw] => 'somthing'
)

1 Ответ

0 голосов
/ 07 марта 2019

Мне кажется, что проблема в опечатке. Вы написали $jwt['JOSE_JWT']['Claims']['email'];, но ключ claims, а не Claims.

Кроме того, $jwt представляется объектом класса JOSE_JWT, а не массивом. Так что использовать его с оператором индекса невозможно просто так. Вместо этого вы должны получить доступ к его свойствам:

$jwt->claims['email']
...