在PHP中解码来自Google的JWT编码字符串

时间:2015-02-12 13:18:59

标签: php google-oauth jwt

我正在升级基于Google的登录系统,这需要我解码Google提供的id_token字符串。字符串有效,我可以通过以下方式解码它们:https://developers.google.com/wallet/digital/docs/jwtdecoder

但我希望我的服务器能够在PHP中动态执行此操作。

我找到了:https://github.com/firebase/php-jwt/tree/masterhttps://github.com/luciferous/jwt

但我无法弄清楚如何使用PEAR包。我可以做简单的PHP脚本复制到我的服务器,但我发现这两个软件包给出的文档非常有限。有没有人有关于如何解码这样一个字符串的示例代码?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您是否正在尝试使用PHP脚本解码JWT? 如果是这样,以下PHP代码(取自https://developers.google.com/wallet/instant-buy/about-jwts#jwt_decoding)可以帮助您使用luciferous的脚本。

$mwr = array(
  'iat' => $now,
  'exp' => $now + 3600,
  'typ' => 'google/wallet/online/masked/v2/request',
  'aud' => 'Google',
  'iss' => MERCHANT_ID,
  'request'=> array(
    'clientId' =>  CLIENT_ID,
    'merchantName'=> MERCHANT_NAME,
    'origin'=> ORIGIN,
     'pay'=> array (
       'estimatedTotalPrice'=> $estimated_total_price,
       'currencyCode'=> $input['currencyCode'],
      ),
      'ship'=> new stdClass(),
  ),
);
if (isset($input['googleTransactionId'])) {
  $mwr['request']['googleTransactionId'] = $input['googleTransactionId'];
}
WalletUtil::encode_send_jwt($mwr);