按原样运行代码,返回错误:


Invalid OAuth scope or ID token audience provided

我从Google 的 OAuth 范围添加了 catch-all Cloud Platform 可写范围:


https://www.googleapis.com/auth/cloud-platform

这样做,似乎有效。见下文:


package main


import (

    "context"

    "log"


    "golang.org/x/oauth2"

    auth "golang.org/x/oauth2/google"

)


func main() {

    var token *oauth2.Token

    ctx := context.Background()

    scopes := []string{

        "https://www.googleapis.com/auth/cloud-platform",

    }

    credentials, err := auth.FindDefaultCredentials(ctx, scopes...)

    if err == nil {

        log.Printf("found default credentials. %v", credentials)

        token, err = credentials.TokenSource.Token()

        log.Printf("token: %v, err: %v", token, err)

        if err != nil {

            log.Print(err)

        }

    }

}

我最近在使用这个库时遇到了一些挑战(访问需要 JWT 受众的 Cloud Run 服务)。在朋友的推荐下,我改用了google.golang.org/api/idtoken。API 非常相似。