auth0-api-client
Version:
A Node.js module for making authenticated API calls using Auth0 Machine-to-Machine JWT tokens
160 lines (118 loc) • 3.62 kB
Markdown
A Node.js module for making authenticated API calls using Auth0 Machine-to-Machine (M2M) JWT tokens.
- 🔐 Auth0 M2M authentication with automatic token management
- 🔄 Automatic token refresh with expiry handling
- 📡 POST and GET request methods
- ⚡ Built-in error handling and response formatting
- 🛡️ Security best practices with token caching
```bash
npm install
```
Copy `.env.example` to `.env` and configure your Auth0 and API settings:
```bash
cp .env.example .env
```
1. Create a Machine-to-Machine application in your Auth0 dashboard
2. Configure the application with the necessary scopes for your API
3. Note down the Domain, Client ID, Client Secret, and Audience
```javascript
const WebDataExporter = require('./index');
const client = new WebDataExporter({
auth0Domain: 'your-domain.auth0.com',
auth0ClientId: 'your-client-id',
auth0ClientSecret: 'your-client-secret',
auth0Audience: 'https://your-api-audience',
apiBaseUrl: 'https://your-api.example.com'
});
// Send data via POST
const result = await client.postData('/endpoint', {
key: 'value',
data: 'example'
});
if (result.success) {
console.log('Success:', result.data);
} else {
console.error('Error:', result.error);
}
```
```javascript
const userData = {
name: 'John Doe',
email: 'john@example.com',
action: 'user_created'
};
const result = await client.postData('/users', userData, {
timeout: 10000, // Optional: custom timeout
headers: { // Optional: additional headers
'X-Custom-Header': 'value'
}
});
```
All methods return a standardized response object:
```javascript
// Success response
{
success: true,
data: { /* API response data */ },
status: 200,
headers: { /* response headers */ }
}
// Error response
{
success: false,
error: {
message: 'Error description',
status: 400, // HTTP status (if available)
data: { /* error details from API */ }
}
}
```
| Option | Required | Description |
|--------|----------|-------------|
| `auth0Domain` | Yes | Your Auth0 domain (e.g., 'your-domain.auth0.com') |
| `auth0ClientId` | Yes | M2M application Client ID |
| `auth0ClientSecret` | Yes | M2M application Client Secret |
| `auth0Audience` | Yes | API audience identifier |
| `apiBaseUrl` | Yes | Base URL of your target API |
## Request Options
Both `postData` and `getData` methods accept an optional `options` parameter:
```javascript
{
timeout: 30000, // Request timeout in milliseconds
headers: {}, // Additional headers
params: {}, // Query parameters (GET only)
axiosConfig: {} // Additional axios configuration
}
```
The module handles three types of errors:
1. **API Errors**: When the API responds with an error status
2. **Network Errors**: When no response is received
3. **Unknown Errors**: Other unexpected errors
- Tokens are automatically cached and reused until expiry
- Automatic refresh when tokens expire
- 5-minute safety buffer before token expiry
- Use `client.clearToken()` to force token refresh
Run the example:
```bash
node example.js
```
- Never commit your `.env` file or expose credentials
- Use environment variables for sensitive configuration
- The module automatically handles token security and expiry
- Tokens are cached in memory only (not persisted)
## License
MIT