code: func NewDNSProviderServiceAccountKey(saKey []byte) (*DNSProvider, error) {
  	if len(saKey) == 0 {
  		return nil, fmt.Errorf("googlecloud: Service Account is missing")
  	}
  
  	// If GCE_PROJECT is non-empty it overrides the project in the service
  	// account file.
  	project := env.GetOrDefaultString("GCE_PROJECT", "")
  	if project == "" {
  		// read project id from service account file
  		var datJSON struct {
  			ProjectID string `json:"project_id"`
  		}
  		err := json.Unmarshal(saKey, &datJSON)
  		if err != nil || datJSON.ProjectID == "" {
  			return nil, fmt.Errorf("googlecloud: project ID not found in Google Cloud Service Account file")
  		}
  		project = datJSON.ProjectID
  	}
  
  	conf, err := google.JWTConfigFromJSON(saKey, dns.NdevClouddnsReadwriteScope)
  	if err != nil {
  		return nil, fmt.Errorf("googlecloud: unable to acquire config: %v", err)
  	}
  	client := conf.Client(context.Background())
  
  	config := NewDefaultConfig()
  	config.Project = project
  	config.HTTPClient = client
  
  	return NewDNSProviderConfig(config)
  }
docs: // NewDNSProviderServiceAccountKey uses the supplied service account JSON
  // to return a DNSProvider instance configured for Google Cloud DNS.