Authorization
PKCE
Proof Key for Code Exchange (S256) for enhanced security
Last modified on August 29, 2026
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Proof Key for Code Exchange (S256) for enhanced security
pkce, err := grantex.GeneratePKCE()
if err != nil {
log.Fatal(err)
}
fmt.Println(pkce.CodeVerifier) // Random 43-char string
fmt.Println(pkce.CodeChallenge) // SHA-256 hash, base64url-encoded
fmt.Println(pkce.CodeChallengeMethod) // Always "S256"
// 1. Generate PKCE pair
pkce, _ := grantex.GeneratePKCE()
// 2. Include challenge in authorization request
authReq, _ := client.Authorize(ctx, grantex.AuthorizeParams{
AgentID: "agent-id",
PrincipalID: "user-123",
Scopes: []string{"read:email"},
CodeChallenge: pkce.CodeChallenge,
CodeChallengeMethod: pkce.CodeChallengeMethod,
})
// 3. Store verifier securely (session, database, etc.)
// ...
// 4. Include verifier when exchanging the code
tokenResp, _ := client.Tokens.Exchange(ctx, grantex.ExchangeTokenParams{
Code: "auth-code-from-callback",
AgentID: "agent-id",
CodeVerifier: pkce.CodeVerifier,
})
| Field | Type | Description |
|---|---|---|
CodeVerifier | string | 43-character random string (base64url) |
CodeChallenge | string | SHA-256 of verifier (base64url) |
CodeChallengeMethod | string | Always "S256" |