【问题标题】:Decode JWT encoded string from Google in PHP在 PHP 中解码来自 Google 的 JWT 编码字符串
【发布时间】:2015-04-13 05:58:06
【问题描述】:

我正在升级基于 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 脚本复制到我的服务器,但我发现这 2 个软件包提供的文档非常有限。有人有关于如何解码这样一个字符串的示例代码吗?

任何帮助将不胜感激。

【问题讨论】:

    标签: php google-oauth jwt


    【解决方案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);
    

    【讨论】:

    • 是的。但要让这样的 sn-p 工作,据我所知,必须安装一个 JWT 库。这不仅仅是将 PHP 文件上传到服务器。 “composer”需要发生一些事情,我的机器上似乎没有。
    • Luciferous 的仓库中的JWT.php 应该是您唯一需要的东西。使用您的变量访问该类的 decode 方法,您应该获得作为 PHP 对象的正确响应。您不需要 pear 或 composer 来运行脚本。
    • 谢谢!我已经运行了解码功能,但我遇到了一些错误。可能是由于解码请求不完整。 $jwt JWT,$key 密钥。这两个值是必需的。 JWT 是长字符串。但我不确定他们在谈论哪个密钥:s
    • 解码 JWT 时,需要 JWT 字符串和“密钥”。我不确定要输入什么键?我不断收到这些错误: PHP 警告:openssl_verify():提供的密钥参数不能被强制转换为第 179 行的 /home/domain.com/php-jwt-master/Authentication/JWT.php 中的公钥 PHP 致命错误:未捕获/home/domain.com/php-jwt-master/Authentication/JWT.php:181中的异常“DomainException”和消息“OpenSSL 无法验证数据:错误:0906D06C:PEM 例程:PEM_read_bio:no start line” >
    • 密钥应该是您的商家密钥,您可以找到说明here。此外,如果您不想验证您的密钥,您也可以将 false 传递给解码函数,如下所示:JWT::decode($jwt, $key, false)
    猜你喜欢
    • 2015-04-14
    • 2013-04-01
    • 1970-01-01
    • 2012-05-18
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    相关资源
    最近更新 更多