【问题标题】:Google Api Php Client - Google Auth OAuth 2Google Api Php 客户端 - Google Auth OAuth 2
【发布时间】:2015-07-07 20:56:20
【问题描述】:

我的代码:

if ($client->getAccessToken()) {
    $_SESSION['access_token'] = $client->getAccessToken();
    $obj_token  = json_decode($client->getAccessToken());
    $accessToken = $obj_token->access_token;
    $token_data = $client->verifyIdToken($accessToken)->getAttributes();
}

错误:

未捕获的异常“Google_Auth_Exception”带有消息“令牌中的段数错误:ya29.qQH27NhAXVXPJ64txBjhT_j1FNaVCjosyfwUFKpgsn9LBiyNDS7wgDXVDR31y9hvFbM824mrzOcrWA”

$accessToken 应该是一个带有 2 个 "." 的字符串。但我不知道为什么 $token_data 返回 a29.qQH27NhAXVXPJ64txBjhT_j1FNaVCjosyfwUFKpgsn9LBiyNDS7wgDXVDR31y9hvFbM824mrzOcrWA',只有 1 个“。”

【问题讨论】:

    标签: google-oauth google-api-php-client google-authentication


    【解决方案1】:

    您正在尝试将access_token 验证为id_token。它们是不同的代币,服务于不同的目的。对于id_token 示例,请参见https://github.com/google/google-api-php-client/blob/master/examples/idtoken.php 处的代码,因此:

    $token_data = $client->verifyIdToken()->getAttributes();
    

    假设 Google 首先在握手过程中返回了 id_token

    【讨论】:

    • 我尝试过这个例子。但是 verifyIdToken() 方法需要一个令牌参数,所以我认为它是 access_token。如果您在 verifyIdToken() 中的 localhost whitout 参数中运行该示例,您会收到一条通知:未定义索引:id_token 和相同的错误:未捕获的异常 'Google_Auth_Exception' 并带有消息“令牌中的段数错误:”
    • 通过将请求中的范围openid 添加到授权端点来确保您获得id_token
    猜你喜欢
    • 1970-01-01
    • 2021-04-25
    • 2013-11-07
    • 1970-01-01
    • 2020-09-23
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多