在 PHP 中验证 ID 令牌时出错 - Google API

Posted

技术标签:

【中文标题】在 PHP 中验证 ID 令牌时出错 - Google API【英文标题】:Error validate an ID token in PHP - Google API 【发布时间】:2021-04-08 14:58:07 【问题描述】:

我正在使用下面的例子backend-auth Google

<?php
    require_once 'Google/vendor/autoload.php';

    $CLIENT_ID = "xxxxxxxxxx";

    // Get $id_token via HTTPS POST.

    $client = new Google_Client(['client_id' => $CLIENT_ID]);  // Specify the CLIENT_ID of the app that accesses the backend
    $payload = $client->verifyIdToken($id_token);
    if ($payload) 
        $userid = $payload['sub'];
        // If request specified a G Suite domain:
        //$domain = $payload['hd'];
     else 
    // Invalid ID token
    
?>

我已经创建了凭据,APIOAUTH2

API_KEY: AIzaAsDfGuYn6nk9761kvnwMxns-PPeO1Ka1YsA
CLIENT_ID: 15123456862-94jrd0d2lis29lbl6dekpk0fp4otgm8r.apps.googleusercontent.com
CLIENT_SECRET: qertf3l3UfgdhjiWEREZI8xN

但它会产生以下错误:

Notice: Undefined variable: id_token in C:\Adsense\index.php on line 10

Fatal error: Uncaught LogicException: id_token must be passed in or set as part of setAccessToken in C:\Adsense\Google\vendor\google\apiclient\src\Client.php:784 Stack trace: #0 C:\Adsense\index.php(10): Google\Client->verifyIdToken(NULL) #1 main thrown in C:\Adsense\Google\vendor\google\apiclient\src\Client.php on line 784

我在谷歌文档和谷歌控制台面板中搜索了这个论坛,但我找不到固定令牌或如何创建它,我找不到参考

https://oauth2.googleapis.com/tokeninfo?id_token=XXXXX

【问题讨论】:

【参考方案1】:

这是一个有点旧的帖子,但对于像我和 OP 这样苦苦挣扎的人来说,这实际上是一个非常简单的解决方案。 示例代码有一个注释掉的行,内容为

    // Get $id_token via HTTPS POST.

您实际上必须编写此代码。使用 Google 的工作示例,javascript 函数将身份验证令牌作为 idtoken 传递。

    $id_token = $_POST['idtoken'];

会成功的。您可能需要执行一些基本的错误检查,例如,

    if (isset($_POST['idtoken']))
        $id_token = $_POST['idtoken'];
        $payload = $client->verifyIdToken($id_token);

        ...

【讨论】:

以上是关于在 PHP 中验证 ID 令牌时出错 - Google API的主要内容,如果未能解决你的问题,请参考以下文章

在客户端检索由 firebase 分配的用户 ID 令牌时出错

无法从 C# 中的 google api 令牌验证器获取数据

在 PHP 中销毁会话时出错

Facebook SDK 3.1 - 验证访问令牌时出错

PHP:Google plus Oauth 2.0 - 获取OAuth2访问令牌时出错,消息:'invalid_client'

验证访问令牌时出错:用户尚未授权应用程序。脸书 SDK 4