php - 无法验证 Google 访问 token (段数错误)

标签 php google-api jwt google-api-php-client google-api-client

我有非常简单的代码 directly from Google's website

$client = new Google_Client(['client_id' => $CLIENT_ID]);

$payload = $client->verifyIdToken($id_token);

if ($payload) {
  $userid = $payload['sub'];
  echo $userid;
} else {
  // Invalid ID token
  echo "error";
}

我收到以下错误:

<b>Fatal error</b>:  Uncaught exception 'UnexpectedValueException' with message 'Wrong number of segments' in /../vendor/firebase/php-jwt/src/JWT.php:79
Stack trace:
#0 /../vendor/google/apiclient/src/Google/AccessToken/Verify.php(103): Firebase\JWT\JWT::decode('ya29.GlzbAwEXTe...', '-----BEGIN PUBL...', Array)
#1 /../vendor/google/apiclient/src/Google/Client.php(713): Google_AccessToken_Verify-&gt;verifyIdToken('ya29.GlzbAwEXTe...', '1074005180734-g...')
#2 /../pages/auth/session.php(7): Google_Client-&gt;verifyIdToken('ya29.GlzbAwEXTe...')

谁知道这是为什么?

最佳答案

回答这个问题是因为另一个问题太短而且含糊不清。

不是传递 profile.getId() 返回的 ID,而是传递 googleUser.getAuthResponse().id_token 返回的 ID 作为您的 id_token(用于将用户 ID 发送到服务器的 POST 请求的 id 字段)。

给任何开发人员的一个重要提示:如果您认为您做了所有您应该做的事情,并且对他们有用,但对您不起作用,那么您没有做您应该做的所有事情。

关于php - 无法验证 Google 访问 token (段数错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41797238/

相关文章:

php - WordPress 在自定义管理菜单下显示分类法

php - 无法修改 header 信息 - header 已发送(混淆)

python - 本地主机拒绝在调用 google api 的 databricks 笔记本中连接

angularjs - Laravel 5.1 和 Angular JS 中的记住用户和忘记密码功能(JWT 身份验证)

php - 在centos上运行yii应用程序

php - 单例模式如何在程序的整个生命周期中保留在内存中?

css - Google 字体无法在 Windows 浏览器中加载,但会在 Mac 浏览器中加载

javascript - 如何增加注释字体大小并加粗google api图表折线图中的注释值?

java - Spring Security 中 PreAuthenticatedAuthenticationToken 的用途?

node.js - 用于 Web 应用程序 JWT 的 Nodejs Express,带有数据库或 session 来对用户进行身份验证