Claude-code-plugins podium-install-auth
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/podium-pack/skills/podium-install-auth" ~/.claude/skills/jeremylongshore-claude-code-plugins-podium-install-auth && rm -rf "$T"
manifest:
plugins/saas-packs/podium-pack/skills/podium-install-auth/SKILL.mdsource content
Podium Install Auth
Overview
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.
Prerequisites
- Podium Developer Account (apply at developer.podium.com)
- OAuth Application credentials (client_id, client_secret)
- A Podium location to authorize against
Instructions
Step 1: Register OAuth Application
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
Step 2: Configure Environment
# .env PODIUM_CLIENT_ID=your_client_id PODIUM_CLIENT_SECRET=your_client_secret PODIUM_REDIRECT_URI=http://localhost:3000/callback
Step 3: OAuth2 Authorization Flow
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);
Step 4: Verify Connection
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}`);
Output
- OAuth application registered with Podium
- Authorization code flow implemented
- Access and refresh tokens obtained
- API connectivity verified
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Wrong client_id/secret | Verify credentials in developer portal |
| Expired authorization code | Codes expire quickly — retry auth flow |
| Scope not approved | Request scope approval from Podium |
| Expired access token | Use refresh token to get new access token |
Resources
Next Steps
Send your first message:
podium-hello-world