我通过Google OAuth Playground获得了以下访问令牌
ya29。Ci9aA2EirNhY3InpsLC2Q5ct1XZh2UL60oWWVmkMCBBUL0M-4oAAoigZCJ6O_a4geA
它似乎不是JWT(或JWS/JWE),因为我预计会有3段。第一部分似乎也太短,无法对标记类型进行编码。
我知道令牌必须是合法的,但我无论如何也弄不清楚是什么规范描述了我正在查看的内容。
这个东西是什么格式的?
OAuth 2.0规范规定:
访问令牌是表示发给客户端的授权的字符串。该字符串通常对客户端是不透明的。
也就是说,您通常不应该期望知道格式或从令牌中获得任何其他有用的信息。
当然,Google当然可以使用JWT或其他容器格式的令牌,但我没有看到任何迹象表明这种情况。(这个答案也让我觉得它们不是任何指定的格式。)
您究竟是如何获得令牌的?
使用Google的Sign-In按钮模板初始化登录&像这样授予权限的过程给了我一个JWT (idToken):
<meta name="google-signin-client_id" content="{{ OAUTH2_CLIENT_ID }}">
<script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>
<div id="google-signin-button"
class="g-signin2"
data-width="170"
data-height="30"
data-onsuccess="onSignIn"
data-onfailure="onSignInFailure">
</div>
function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
var idToken = googleUser.getAuthResponse().id_token;
}