API de autenticación de Kingdom Hall Attendant para gestionar el inicio de sesión y el registro de usuarios en aplicaciones que utilizan el ecosistema de KHA.
View the Project on GitHub livrasand/kingdom_hall_attendant_auth_api
URL: /api/register_developer
Method: POST
Content-Type: application/json
Request body:
{
"name": "Developer Name",
"email": "developer@example.com"
}
Response:
{
"client_id": "generated_client_id",
"client_secret": "generated_client_secret"
}
URL: /api/register_application
Method: POST
Content-Type: application/json
Request body:
{
"developer_email": "developer@example.com",
"name": "Application Name",
"redirect_uri": "https://example.com/callback"
}
Response:
{
"success": true
}
URL: /api/adjust_rate_limit
Method: POST
Content-Type: application/json
Request body:
{
"developer_email": "developer@example.com",
"rate_limit_daily": 500,
"rate_limit_hourly": 100
}
Response:
{
"success": true
}
Para iniciar sesión en una aplicación de terceros con Kingdom Hall Attendant, utiliza el siguiente flujo:
https://your-domain.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=name email&state=YOUR_STATE
El usuario se autentica y autoriza la aplicación.
El usuario es redirigido de vuelta a YOUR_REDIRECT_URI
con un código de autorización.
curl -X POST https://your-domain.com/oauth/token \
-d "code=AUTHORIZATION_CODE" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "redirect_uri=YOUR_REDIRECT_URI" \
-d "grant_type=authorization_code"
fetch('https://your-domain.com/oauth/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
code: 'AUTHORIZATION_CODE',
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
redirect_uri: 'YOUR_REDIRECT_URI',
grant_type: 'authorization_code'
})
})
.then(response => response.json())
.then(data => console.log(data));
Registra un nuevo usuario.
URL: /api/register
Method: POST
Content-Type: application/json
Request body:
{
"email": "usuario@example.com"
}
Respuestas:
{
"message": "Registro exitoso. Se ha enviado un enlace de confirmación a tu correo."
}
{
"error": "Correo y contraseña son requeridos"
}
{
"error": "El usuario ya existe"
}
{
"error": "Error: la base de datos 'kha.db' no se encontró"
}
Inicia sesión un usuario registrado.
URL: /api/login
Method: POST
Content-Type: application/json
Request Body:
{
"email": "usuario@example.com",
"password": "tu_contraseña"
}
Respuestas:
{
"access_token": "jwt_token_generado"
}
{
"error": "Correo y contraseña son requeridos"
}
{
"error": "Correo o contraseña incorrectos"
}
Registro:
import requests
url = "http://tu_dominio/api/register"
data = {
"email": "usuario@example.com",
"password": "tu_contraseña"
}
response = requests.post(url, json=data)
print(response.status_code)
print(response.json())
Inicio de sesión:
import requests
url = "http://tu_dominio/api/login"
data = {
"email": "usuario@example.com",
"password": "tu_contraseña"
}
response = requests.post(url, json=data)
print(response.status_code)
print(response.json())
if response.status_code == 200:
token = response.json()["access_token"]
print("JWT Token:", token)
Registro:
const url = "http://tu_dominio/api/register";
const data = {
email: "usuario@example.com",
password: "tu_contraseña"
};
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch((error) => {
console.error('Error:', error);
});
Inicio de sesión:
const url = "http://tu_dominio/api/login";
const data = {
email: "usuario@example.com",
password: "tu_contraseña"
};
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
if (data.access_token) {
console.log('JWT Token:', data.access_token);
}
})
.catch((error) => {
console.error('Error:', error);
});
Registro:
curl -X POST http://tu_dominio/api/register \
-H "Content-Type: application/json" \
-d '{
"email": "usuario@example.com",
"password": "tu_contraseña"
}'
Inicio de sesión:
curl -X POST http://tu_dominio/api/login \
-H "Content-Type: application/json" \
-d '{
"email": "usuario@example.com",
"password": "tu_contraseña"
}'
Registro:
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) {
try {
URL url = new URL("http://tu_dominio/api/register");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json; utf-8");
conn.setRequestProperty("Accept", "application/json");
conn.setDoOutput(true);
String jsonInputString = "{\"email\": \"usuario@example.com\", \"password\": \"tu_contraseña\"}";
try(OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
int code = conn.getResponseCode();
System.out.println("Response Code : " + code);
// Handle the response (not shown for brevity)
} catch (Exception e) {
e.printStackTrace();
}
}
}
Inicio de sesión:
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) {
try {
URL url = new URL("http://tu_dominio/api/login");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json; utf-8");
conn.setRequestProperty("Accept", "application/json");
conn.setDoOutput(true);
String jsonInputString = "{\"email\": \"usuario@example.com\", \"password\": \"tu_contraseña\"}";
try(OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input
, 0, input.length);
}
int code = conn.getResponseCode();
System.out.println("Response Code : " + code);
// Handle the response (not shown for brevity)
} catch (Exception e) {
e.printStackTrace();
}
}
}