code: func (s *AuthorizationsService) GetOrCreateForApp(ctx context.Context, clientID string, auth *AuthorizationRequest) (*Authorization, *Response, error) {
  	var u string
  	if auth.Fingerprint == nil || *auth.Fingerprint == "" {
  		u = fmt.Sprintf("authorizations/clients/%v", clientID)
  	} else {
  		u = fmt.Sprintf("authorizations/clients/%v/%v", clientID, *auth.Fingerprint)
  	}
  
  	req, err := s.client.NewRequest("PUT", u, auth)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	a := new(Authorization)
  	resp, err := s.client.Do(ctx, req, a)
  	if err != nil {
  		return nil, resp, err
  	}
  
  	return a, resp, nil
  }
docs: // GetOrCreateForApp creates a new authorization for the specified OAuth
  // application, only if an authorization for that application doesn’t already
  // exist for the user.
  //
  // If a new token is created, the HTTP status code will be "201 Created", and
  // the returned Authorization.Token field will be populated. If an existing
  // token is returned, the status code will be "200 OK" and the
  // Authorization.Token field will be empty.
  //
  // clientID is the OAuth Client ID with which to create the token.
  //
  // GitHub API docs:
  // https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app
  // https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint