如何在 Flutter 的 google_sign_in 中获取 JWT 格式的访问令牌?

Posted

技术标签:

【中文标题】如何在 Flutter 的 google_sign_in 中获取 JWT 格式的访问令牌?【英文标题】:How to get an access token in JWT format in Flutter's google_sign_in? 【发布时间】:2021-07-20 14:47:39 【问题描述】:

我正在验证对 GCP Cloud Endpoints 后面的 GCP 上运行的私有 API 的调用,如 here 所述。

一切正常,但对于每个呼叫,我都使用 GoogleSignInAuthentication.idToken,其中包含用户的个人资料信息,而且通常有太多信息无法访问。

GoogleSignInAuthentication.authTokenGoogleSignInAccount.authHeaders 不是 JWT 格式,被 Endpoints 拒绝。

有没有办法在google_sing_in 中获取 JWT 格式的访问令牌?或者每次调用都可以使用 id 令牌?

【问题讨论】:

Google OAuth 访问令牌不是 JWT。它们是不透明的令牌。使用 OAuth 身份令牌。身份令牌中包含多少信息(声明)受请求范围(打开、电子邮件、配置文件)的影响。 developers.google.com/identity/protocols/oauth2/… 【参考方案1】:

Google 登录库提供的 idToken 已经是一个 Open Id Connect 令牌,正如您在此 documentation 中看到的那样,这意味着它已经采用了安全的 JWT 格式,所以是的,它绝对可以使用它。

Google 登录库还提供了一个 OAuth2 访问令牌,可以使用 GoogleSignInAuthentication.accessToken 调用,通过使用它您可能能够生成 JWT 格式的令牌。

所以这完全取决于你,我个人会使用提供的idToken,因为它已经准备好供你使用了。

【讨论】:

以上是关于如何在 Flutter 的 google_sign_in 中获取 JWT 格式的访问令牌?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 如何在 Flutter 应用上实现 News Count

Flutter:如何在 Flutter 中为 Firebase (FCM) 注册令牌订阅ToTopic

Flutter:如何在 google_maps_flutter 中为标记图标设置动画?

Flutter :: 如何在showTimePicker中限制时间?

flutter - 如何在 dart/flutter 中收听流值

如何在flutter中使用flutter_webview_plugin和AndroidX