code: func (p *OpenPrinter) VerifyClaim() error {
  	if p.verify != nil {
  		return nil
  	}
  
  	var resp verifyResponse
  	if err := jsonRPC(&p.auth, "GET", p.register.PollingURL+p.auth.APIClientID, nil, &resp); err != nil {
  		return fmt.Errorf("VerifyClaim: %v", err)
  	}
  
  	var tr oauth.Transport
  	tr.Config = &oauth.Config{
  		ClientId:     p.auth.APIClientID,
  		ClientSecret: p.auth.APIClientSecret,
  		Scope:        "https://www.googleapis.com/auth/cloudprint https://www.googleapis.com/auth/googletalk",
  		AuthURL:      "https://accounts.google.com/o/oauth2/auth",
  		TokenURL:     "https://accounts.google.com/o/oauth2/token",
  		RedirectURL:  "oob",
  	}
  	tok, err := tr.Exchange(resp.AuthorizationCode)
  	if err != nil {
  		return fmt.Errorf("VerifyClaim: oauth exchange: %v", err)
  	}
  
  	p.auth.Token = *tok
  	p.auth.TokenUser = resp.UserEmail
  	p.auth.XMPPJID = resp.XMPPJID
  	p.verify = &resp
  	return nil
  }
docs: // VerifyClaim checks that the printer has been claimed.
  // If the printer is claimed, VerifyClaim returns no error.
  // If the printer is unclaimed, VerifyClaim retruns ErrUnclaimed.
  // It is possible for VerifyClaim to return other errors, such as
  // in the case of network problems.
  //
  // A side effect of verifying that claim is that Google creates
  // a synthetic account that is only useful in a future call to
  // NewServer, to manage just this one printer.
  // The information about that account can be retrieved
  // from the Auth, Printer, and Server methods after VerifyClaim
  // succeeds.