簡體   English   中英

驗證 PHP 中的 ID 令牌時出錯 - Google API

[英]Error validate an ID token in PHP - Google API

我正在使用以下示例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

這是一個有點舊的帖子,但對於像我和 OP 這樣苦苦掙扎的人來說,這實際上是一個非常簡單的解決方案。 示例代碼有一個注釋掉的行,內容為

    // Get $id_token via HTTPS POST.

您實際上必須編寫此代碼。 使用來自 Google 的工作示例,JavaScript function 將身份驗證令牌作為 idtoken 傳遞。

    $id_token = $_POST['idtoken'];

會成功的。 您可能需要執行一些基本的錯誤檢查,例如,

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

        ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM