Google API客户端 - 必须传入id_token或将其设置为setAccessToken的一部分

时间:2017-07-15 12:11:23

标签: php oauth-2.0 google-oauth

我正在尝试使用我从Google Developers Playground(OAuth 2.0)获得的令牌ID制作返回Google用户个人资料的API。我已阅读并遵循指南,但当我尝试使用我的代码时,它会显示id_token must be passed in or set as part of setAccessToken。这是我的代码:

  $id_token = $this->input->post('id_token');
  $id_event = $this->input->post('id_event');

  $client = new Google_Client(['client_id' => GOOGLE_CLIENT_ID]);
  $payload = $client->verifyIdToken($id_token); //It's error here

起初它运行良好,但当我再次尝试运行时,错误显示出来。我该怎么办?

以下是完整的错误消息:

Type: LogicException
Message: id_token must be passed in or set as part of setAccessToken

Filename: D:\XAMPP\htdocs\api\application\vendor\google\google-api-php-client\src\Google\Client.php
Line Number: 702

Backtrace:
    File: D:\XAMPP\htdocs\api\application\controllers\C_android_api.php
    Line: 190
    Function: verifyIdToken

    File: D:\XAMPP\htdocs\api\index.php
    Line: 315
    Function: require_once

1 个答案:

答案 0 :(得分:1)

请参阅我的解决方案here

  

当我提供“email”范围时,修复了以下问题“id_token必须传入或设置为setAccessToken的一部分”。

     

即,$client->addScope("email");

     

此处的参考和完整示例:https://github.com/google/google-api-php-client/blob/master/examples/idtoken.php

希望这有帮助。