29#ifndef DETERMINISTICESPASYNCWEBSERVER_OAUTH2_H
30#define DETERMINISTICESPASYNCWEBSERVER_OAUTH2_H
36#if DETWS_ENABLE_OAUTH2
39struct DetwsOAuth2Tokens
41 char access_token[DETWS_OAUTH2_TOKEN_LEN];
42 char id_token[DETWS_OAUTH2_TOKEN_LEN];
43 char refresh_token[DETWS_OAUTH2_RT_LEN];
49enum class DetwsOAuth2Result : int32_t
51 DETWS_OAUTH2_ERR_BUILD = -1,
52 DETWS_OAUTH2_ERR_TRANSPORT = -2,
53 DETWS_OAUTH2_ERR_RESPONSE = -3,
68int detws_oauth2_build_code_request(
const char *code,
const char *redirect_uri,
const char *client_id,
69 const char *client_secret,
const char *code_verifier,
char *out,
size_t cap);
75int detws_oauth2_build_refresh_request(
const char *refresh_token,
const char *client_id,
const char *client_secret,
76 char *out,
size_t cap);
82bool detws_oauth2_parse_token_response(
const char *json, DetwsOAuth2Tokens *out);
84#if DETWS_ENABLE_HTTP_CLIENT
93int detws_oauth2_exchange_code(
const char *token_url,
const char *code,
const char *redirect_uri,
const char *client_id,
94 const char *client_secret,
const char *code_verifier, DetwsOAuth2Tokens *out);
100int detws_oauth2_refresh(
const char *token_url,
const char *refresh_token,
const char *client_id,
101 const char *client_secret, DetwsOAuth2Tokens *out);
User-facing configuration for DeterministicESPAsyncWebServer.