29#ifndef PROTOCORE_OAUTH2_H
30#define PROTOCORE_OAUTH2_H
39struct pc_o_auth2_tokens
41 char access_token[PC_OAUTH2_TOKEN_LEN];
42 char id_token[PC_OAUTH2_TOKEN_LEN];
43 char refresh_token[PC_OAUTH2_RT_LEN];
49enum class pc_o_auth2_result : int32_t
51 PC_OAUTH2_ERR_BUILD = -1,
52 PC_OAUTH2_ERR_TRANSPORT = -2,
53 PC_OAUTH2_ERR_RESPONSE = -3,
68int pc_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 pc_oauth2_build_refresh_request(
const char *refresh_token,
const char *client_id,
const char *client_secret,
76 char *out,
size_t cap);
82bool pc_oauth2_parse_token_response(
const char *json, pc_o_auth2_tokens *out);
84#if PC_ENABLE_HTTP_CLIENT
93int pc_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, pc_o_auth2_tokens *out);
100int pc_oauth2_refresh(
const char *token_url,
const char *refresh_token,
const char *client_id,
101 const char *client_secret, pc_o_auth2_tokens *out);
User-facing configuration for ProtoCore.