我有非常简单的代码 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->verifyIdToken('ya29.GlzbAwEXTe...', '1074005180734-g...')
#2 /../pages/auth/session.php(7): Google_Client->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/