android - 在 Go 中验证 Google 登录 ID token

标签 android google-app-engine go oauth google-client

我正在寻找使用 Go 后端服务器项目为 Android 的 Google 登录验证 ID token 的方法。

在 Go 中使用 Google API 客户端库验证 ID token 的等效函数是什么?

从这个关于使用 Google API 客户端库部分的页面

https://developers.google.com/identity/sign-in/android/backend-auth#using-a-google-api-client-library

有 Java 和 Python 示例,还有用于使用适用于 PHP、Node.js 和其他语言的 Google API 客户端库验证 ID token 的链接。我检查了我的目标语言;去这里

https://github.com/google/google-api-go-client/blob/master/GettingStarted.md

但是,我发现没有像 Java 和 Python 示例中那样用于验证 token 的等效函数。 Go 中有做这种事情的功能吗?

我不想使用 token 信息端点

https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

因为它引入了可能的延迟和网络错误。我希望使用 Google API 客户端库。请指导我应该在哪里查看。

最佳答案

这就是我使用 https://github.com/google/google-api-go-client 完成的方式图书馆:

import (
    "google.golang.org/api/oauth2/v2"
    "net/http"
)

var httpClient = &http.Client{}

func verifyIdToken(idToken string) (*oauth2.Tokeninfo, error) {
    oauth2Service, err := oauth2.New(httpClient)
    tokenInfoCall := oauth2Service.Tokeninfo()
    tokenInfoCall.IdToken(idToken)
    tokenInfo, err := tokenInfoCall.Do()
    if err != nil {
        return nil, err
    }
    return tokenInfo, nil
}

oauth2.Tokeninfo 对象包含有关用户的信息。 请注意,这会调用 https://www.googleapis.com/oauth2/v2/tokeninfo我认为所有 Google API 客户端库都会在后台进行此 http 调用。

关于android - 在 Go 中验证 Google 登录 ID token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716117/

相关文章:

java - 在 Android 屏幕的上半部分使用 Canvas 绘制一个圆

google-app-engine - 使用 Google App Engine 将所有请求从一个域重定向到另一个域,但在 yaml 中保留静态路由规则

datetime - Golang - 结构 : time. 时间

golang测试报错: cannot find package "github.com/stretchr/testify/assert" in any of:

android - @react-native-firebase\dynamic-links 找不到符号

android - 如何在Android模拟器中更改IP

python - 在 Google Apps Marketplace 中获取用户许可 - 错误

google-app-engine - Android Studio 在哪里隐藏应用引擎项目的上传权限?

go - 为什么 recover() 在嵌套的延迟函数中不起作用?

java - 应用程序在设备上运行但在模拟器上崩溃?