代码之家  ›  专栏  ›  技术社区  ›  imin

正在使用www.googleapis验证id令牌。com和google-api-php客户端

  •  0
  • imin  · 技术社区  · 10 年前

    因此,我使用

    GoogleSignInAccount acct = result.getSignInAccount();
    String idToken = acct.getIdToken();
    

    如果我尝试使用 https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=idToken

    那么它就会成功;我是指谷歌百科。com将返回如下内容:

    {
    iss: "https://accounts.google.com",
    aud: "12312331-hjs13hbf0j1ge08s7lvepiupiljuokce.apps.googleusercontent.com",
    sub: "23432432",
    email_verified: "true",
    azp: "12312331-nvi4gh28jekfm3e48ofqeh1c5rof2rsa.apps.googleusercontent.com",
    email: "miowww@gmail.com",
    iat: "123213123",
    exp: "123213123",
    name: "Me Miow",
    picture: "https://lh5.googleusercontent.com/-XXXX/AAAAAAAAAAI/XXXX/XXXX/s96-c/photo.jpg",
    given_name: "Me",
    family_name: "Miow",
    locale: "en",
    alg: "RS256",
    kid: "849996986ecf01a6c8xxxxxxx"
    }
    

    但如果使用图书馆 https://github.com/google/google-api-php-client 并运行idtoken。php?code=google\apiclient\examples返回的idToken库

    Fatal error: Uncaught InvalidArgumentException: Invalid token format in /home/meowww/public_html/meniti/vendor/google/apiclient/src/Google/Client.php:423 Stack trace: #0 /home/meowww/public_html/meniti/idtoken.php(65): Google_Client->setAccessToken(Array) #1 {main} thrown in /home/meowww/public_html/meniti/vendor/google/apiclient/src/Google/Client.php on line 423
    

    为什么google api php客户端会显示错误?

    1 回复  |  直到 10 年前
        1
  •  2
  •   trajchevska    10 年前

    这个 $_GET['code'] 是用户经过身份验证后Google返回的唯一值。它与 id_token ,这就是为什么你得到 InvalidArgumentException 。您正在查看的示例实际上是一个身份验证示例,它涵盖了获取id令牌所需的所有步骤。如果您已经拥有该令牌,并且还想在后端验证它,那么可以跳过所有这些步骤,直接进行验证。即:

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

    我认为您需要启用脱机访问才能实现此功能。