John 的解决方案适用于任何语言,无需任何外部库。但是,当部署了元数据服务器时,它仅适用于 Google Cloud 环境。您无法在计算机上执行此测试。
我建议只使用一段 Python 代码(使用 Google OAuth 库,但它适用于具有此库的其他语言)来询问库当前的凭据。如果凭据是服务帐户(来自您计算机上的 GOOGLE_APPLICATION_CREDENTIALS、ADC(应用程序默认凭据)或元数据服务器),您将打印电子邮件,否则,您会收到警告消息,因为您使用了用户帐户凭据
import google.auth
credentials, project_id = google.auth.default()
if hasattr(credentials, "service_account_email"):
print(credentials.service_account_email)
else:
print("WARNING: no service account credential. User account credential?")
请注意,如果使用默认服务帐户,则此方法将打印default
而不是整个电子邮件地址。
编辑 1
ctx := context.Background()
credential,err := google.FindDefaultCredentials(ctx)
content := map[string]interface{}{}
json.Unmarshal(credential.JSON,&content)
if content["client_email"] != nil {
fmt.Println(content["client_email"])
} else {
fmt.Println("WARNING: no service account credential. User account credential?")
}