diff --git a/google-api-go-generator/gen.go b/google-api-go-generator/gen.go
index e998290..1902f7b 100644
--- a/google-api-go-generator/gen.go
+++ b/google-api-go-generator/gen.go
@@ -605,7 +605,7 @@
 		pn(`// By default, all available scopes (see "Constants") are used to authenticate. To restrict scopes, use option.WithScopes:`)
 		pn("//")
 		// NOTE: the first scope tends to be the broadest. Use the last one to demonstrate restriction.
-		pn("//   %sService, err := %s.NewService(ctx, option.WithScopes(%s.%s))", pkg, pkg, pkg, scopeIdentifierFromURL(a.doc.Auth.OAuth2Scopes[len(a.doc.Auth.OAuth2Scopes)-1].URL))
+		pn("//   %sService, err := %s.NewService(ctx, option.WithScopes(%s.%s))", pkg, pkg, pkg, scopeIdentifier(a.doc.Auth.OAuth2Scopes[len(a.doc.Auth.OAuth2Scopes)-1]))
 		pn("//")
 	}
 	pn("// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:")
@@ -683,7 +683,7 @@
 	if len(a.doc.Auth.OAuth2Scopes) != 0 {
 		pn("scopesOption := option.WithScopes(")
 		for _, scope := range a.doc.Auth.OAuth2Scopes {
-			pn("%q,", scope.URL)
+			pn("%q,", scope.ID)
 		}
 		pn(")")
 		pn("// NOTE: prepend, so we don't override user-specified scopes.")
@@ -770,16 +770,21 @@
 			a.p("\n")
 		}
 		n++
-		ident := scopeIdentifierFromURL(scope.URL)
+		ident := scopeIdentifier(scope)
 		if scope.Description != "" {
 			a.p("%s", asComment("\t", scope.Description))
 		}
-		a.pn("\t%s = %q", ident, scope.URL)
+		a.pn("\t%s = %q", ident, scope.ID)
 	}
 	a.p(")\n\n")
 }
 
-func scopeIdentifierFromURL(urlStr string) string {
+func scopeIdentifier(s disco.Scope) string {
+	if s.ID == "openid" {
+		return "OpenIDScope"
+	}
+
+	urlStr := s.ID
 	const prefix = "https://www.googleapis.com/auth/"
 	if !strings.HasPrefix(urlStr, prefix) {
 		const https = "https://"
diff --git a/google-api-go-generator/gen_test.go b/google-api-go-generator/gen_test.go
index 4a2cd92..9f530fe 100644
--- a/google-api-go-generator/gen_test.go
+++ b/google-api-go-generator/gen_test.go
@@ -13,6 +13,7 @@
 	"strings"
 	"testing"
 
+	"google.golang.org/api/google-api-go-generator/internal/disco"
 	"google.golang.org/api/internal/version"
 )
 
@@ -99,8 +100,8 @@
 		},
 	}
 	for _, test := range tests {
-		if got := scopeIdentifierFromURL(test[0]); got != test[1] {
-			t.Errorf("scopeIdentifierFromURL(%q) got %q, want %q", test[0], got, test[1])
+		if got := scopeIdentifier(disco.Scope{ID: test[0]}); got != test[1] {
+			t.Errorf("scopeIdentifier(%q) got %q, want %q", test[0], got, test[1])
 		}
 	}
 }
diff --git a/google-api-go-generator/internal/disco/disco.go b/google-api-go-generator/internal/disco/disco.go
index 5221d88..0dee96a 100644
--- a/google-api-go-generator/internal/disco/disco.go
+++ b/google-api-go-generator/internal/disco/disco.go
@@ -93,7 +93,7 @@
 
 // A Scope is an OAuth2 scope.
 type Scope struct {
-	URL         string
+	ID          string
 	Description string
 }
 
@@ -114,7 +114,7 @@
 	// Sort keys to provide a deterministic ordering, mainly for testing.
 	for _, k := range sortedKeys(m.OAuth2.Scopes) {
 		a.OAuth2Scopes = append(a.OAuth2Scopes, Scope{
-			URL:         k,
+			ID:          k,
 			Description: m.OAuth2.Scopes[k].Description,
 		})
 	}
