小编典典

在Go中验证Google登录ID令牌

go

我正在寻找一种方法来验证带有Go后端服务器项目的Android的Google登录的ID令牌。

在Go中使用Google API客户端库来验证ID令牌的等效功能是什么?

从此页面的“ 使用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令牌的链接。我检查了我的目标语言;到这里

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

但是,我发现没有等效的函数可以像Java和Python示例中那样验证令牌。Go中有任何功能可以做到这一点吗?

我不想使用令牌信息端点

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

因为它会引入潜在的延迟和网络错误。我希望使用Google API客户端库。请引导我到哪里去研究。


阅读 868

收藏
2020-07-02

共1个答案

小编典典

这是我使用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调用的。

2020-07-02