From podium-pack
Sets up OAuth2 auth for Podium API in Node.js/Express apps. Implements authorization flow, token exchange, and verification for messaging, reviews, payments access.
How this skill is triggered — by the user, by Claude, or both
Slash command
/podium-pack:podium-install-authThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Set up Podium API authentication using OAuth2 authorization code flow. Podium requires a Developer Account, OAuth application credentials, and user authorization to access location data.
Set up Podium API authentication using OAuth2 authorization code flow. Podium requires a Developer Account, OAuth application credentials, and user authorization to access location data.
1. Go to developer.podium.com
2. Create a new OAuth Application
3. Set redirect URI: http://localhost:3000/callback
4. Copy client_id and client_secret
5. Select scopes: messages.read, messages.write, contacts.read, reviews.read
# .env
PODIUM_CLIENT_ID=your_client_id
PODIUM_CLIENT_SECRET=your_client_secret
PODIUM_REDIRECT_URI=http://localhost:3000/callback
import express from 'express';
import axios from 'axios';
const app = express();
// Step 1: Redirect user to Podium authorization
app.get('/auth', (req, res) => {
const authUrl = `https://api.podium.com/oauth/authorize?client_id=${process.env.PODIUM_CLIENT_ID}&redirect_uri=${encodeURIComponent(process.env.PODIUM_REDIRECT_URI!)}&response_type=code&scope=messages.read+messages.write`;
res.redirect(authUrl);
});
// Step 2: Exchange code for access token
app.get('/callback', async (req, res) => {
const { code } = req.query;
const { data } = await axios.post('https://api.podium.com/oauth/token', {
grant_type: 'authorization_code',
code,
client_id: process.env.PODIUM_CLIENT_ID,
client_secret: process.env.PODIUM_CLIENT_SECRET,
redirect_uri: process.env.PODIUM_REDIRECT_URI,
});
console.log(`Access token: ${data.access_token}`);
console.log(`Refresh token: ${data.refresh_token}`);
res.json({ status: 'authenticated' });
});
app.listen(3000);
const podium = axios.create({
baseURL: 'https://api.podium.com/v4',
headers: { 'Authorization': `Bearer ${accessToken}` },
});
const { data } = await podium.get('/locations');
console.log(`Connected! Locations: ${data.data.length}`);
| Error | Cause | Solution |
|---|---|---|
invalid_client | Wrong client_id/secret | Verify credentials in developer portal |
invalid_grant | Expired authorization code | Codes expire quickly — retry auth flow |
invalid_scope | Scope not approved | Request scope approval from Podium |
401 Unauthorized | Expired access token | Use refresh token to get new access token |
Send your first message: podium-hello-world
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin podium-packProvides TypeScript patterns for Podium API deploy integration using OAuth2-authenticated REST calls for messaging, reviews, and payments.
Installs intercom-client TypeScript SDK and configures Intercom API authentication via access tokens or OAuth. For new integrations or API credential setup.
Installs @mirohq/miro-api Node.js client and configures OAuth 2.0 authentication for Miro REST API v2.