()
| 101 | } |
| 102 | |
| 103 | func generateClientID() (string, error) { |
| 104 | // Use 24 bytes for client ID (shorter than refresh tokens) |
| 105 | bytes := make([]byte, 24) |
| 106 | if _, err := rand.Read(bytes); err != nil { |
| 107 | return "", err |
| 108 | } |
| 109 | return clientIDPrefix + base64.RawURLEncoding.EncodeToString(bytes), nil |
| 110 | } |
| 111 | |
| 112 | func generateClientSecret() (string, error) { |
| 113 | token, err := auth.GenerateOpaqueToken() |