按原样运行代码,返回错误:
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 非常相似。