谷歌似乎有两种类型的令牌,我在从旧的Google+登录迁移到谷歌登录时遇到问题,如下所述:https://developers.google.com/identity/sign-in/web/quick-migration-guide
我正在使用谷歌php客户端连接到谷歌API:https://github.com/google/google-api-php-client
$client = new Google_Client();
$client->setClientId($appId);
$client->setClientSecret($secret);
$client->setAccessToken($token);
以上是我在旧的Google+登录上工作的代码。 $token是json编码格式
[
created: original_token.issued_at,
access_token: original_token.access_token,
expires_in: original_token.expires_in
]
访问令牌的格式包含两个段,如下所示:
xxx.xxxxxxxxxxxxxxxxxxxxxxxxxx
当我使用迁移中的新格式时,我调用了googleUser.getAuthResponse().id_token
它为我提供了一种具有 3 个段且更长的 JWT 令牌格式。
我正在使用这种方法,它似乎是较新的方法并返回一个字符串标记:
当我将该id_token放入与access_token相同的 json 对象时,我收到一个错误,指出令牌格式错误。如果我尝试 base64 解码原始access_token它看起来像二进制。所以我不确定如何将这个新id_token转换为我可以与此 API 一起使用的格式。
我怎样才能转换这个?
从你的问题来看,不清楚你想做什么。
JWT,看起来像这样:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI3NjEzMjY3OTgwNjktcjVtbGpsbG4xcmQ0bHJiaGc3NWVmZ2lncDM2bTc4ajVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvcHJlZGljdGlvbiIsImF1ZCI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbiIsImV4cCI6MTMyODU1NDM4NSwiaWF0IjoxMzI4NTUwNzg1fQ.ixOUGehweEVX_UKXv5BbbwVEdcz6AYS-6uQV6fGorGKrHf3LIJnyREw9evE-gs2bmMaQI5_UbabvI4k-mQE4kBqtmSpTzxYBL1TCd7Kv5nTZoUC1CmwmWCFqT9RE6D7XSgPUh_jF1qskLa2w0rxMSjwruNKbysgRNctZPln7cqQ
是身份验证请求的一部分。
如果请求获得批准,您将收到如下响应:
{
"access_token" : "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M",
"token_type" : "Bearer",
"expires_in" : 3600
}
哪个包含您要在请求中实际使用的令牌。