diff --git a/authhandler/example_test.go b/authhandler/example_test.go
deleted file mode 100644
index a62b4e1..0000000
--- a/authhandler/example_test.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2021 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package authhandler_test
-
-import (
-	"context"
-	"fmt"
-	"net/http"
-	"net/http/httptest"
-
-	"golang.org/x/oauth2"
-	"golang.org/x/oauth2/authhandler"
-)
-
-// CmdAuthorizationHandler returns a command line auth handler that prints
-// the auth URL to the console and prompts the user to authorize in the
-// browser and paste the auth code back via stdin.
-//
-// Per the OAuth protocol, a unique "state" string should be specified here.
-// The authhandler token source will verify that the "state" is identical in
-// the request and response before exchanging the auth code for OAuth token to
-// prevent CSRF attacks.
-//
-// For convenience, this handler returns a pre-configured state instead of
-// asking the user to additionally paste the state from the auth response.
-// In order for this to work, the state configured here must match the state
-// used in authCodeURL.
-func CmdAuthorizationHandler(state string) authhandler.AuthorizationHandler {
-	return func(authCodeURL string) (string, string, error) {
-		fmt.Printf("Go to the following link in your browser:\n\n   %s\n\n", authCodeURL)
-		fmt.Println("Enter authorization code:")
-		var code string
-		fmt.Scanln(&code)
-		return code, state, nil
-	}
-}
-
-func Example() {
-	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		r.ParseForm()
-		w.Header().Set("Content-Type", "application/json")
-		w.Write([]byte(`{
-				"access_token": "90d64460d14870c08c81352a05dedd3465940a7c",
-				"scope": "pubsub",
-				"token_type": "bearer",
-				"expires_in": 3600
-			}`))
-	}))
-	defer ts.Close()
-
-	ctx := context.Background()
-	conf := &oauth2.Config{
-		ClientID: "testClientID",
-		Scopes:   []string{"pubsub"},
-		Endpoint: oauth2.Endpoint{
-			AuthURL:  "testAuthCodeURL",
-			TokenURL: ts.URL,
-		},
-	}
-	state := "unique_state"
-
-	token, err := authhandler.TokenSource(ctx, conf, state, CmdAuthorizationHandler(state)).Token()
-
-	if err != nil {
-		fmt.Println(err)
-	}
-
-	fmt.Printf("AccessToken: %s", token.AccessToken)
-
-	// Output:
-	// Go to the following link in your browser:
-	//
-	//    testAuthCodeURL?client_id=testClientID&response_type=code&scope=pubsub&state=unique_state
-	//
-	// Enter authorization code:
-	// AccessToken: 90d64460d14870c08c81352a05dedd3465940a7c
-}
