| name | evernote-install-auth |
| description | Install and configure Evernote SDK and OAuth authentication.
Use when setting up a new Evernote integration, configuring API keys,
or initializing Evernote in your project.
Trigger with phrases like "install evernote", "setup evernote",
"evernote auth", "configure evernote API", "evernote oauth".
|
| allowed-tools | Read, Write, Edit, Bash(npm:*), Bash(pip:*), Grep |
| version | 1.0.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
Evernote Install & Auth
Overview
Set up Evernote SDK and configure OAuth 1.0a authentication for accessing the Evernote Cloud API.
Prerequisites
- Node.js 18+ or Python 3.10+
- Package manager (npm, pnpm, or pip)
- Evernote developer account
- API key from Evernote Developer Portal (requires approval, allow 5 business days)
Instructions
Step 1: Request API Key
- Go to Evernote Developer Portal
- Request an API key via the contact form
- Wait for manual approval (up to 5 business days)
- Receive your
consumerKey and consumerSecret
Step 2: Install SDK
npm install evernote
pip install evernote
Step 3: Configure Environment
cat << 'EOF' >> .env
EVERNOTE_CONSUMER_KEY=your-consumer-key
EVERNOTE_CONSUMER_SECRET=your-consumer-secret
EVERNOTE_SANDBOX=true
EOF
Step 4: Initialize OAuth Client
const Evernote = require('evernote');
const client = new Evernote.Client({
consumerKey: process.env.EVERNOTE_CONSUMER_KEY,
consumerSecret: process.env.EVERNOTE_CONSUMER_SECRET,
sandbox: process.env.EVERNOTE_SANDBOX === 'true',
china: false
});
from evernote.api.client import EvernoteClient
client = EvernoteClient(
consumer_key='your-consumer-key',
consumer_secret='your-consumer-secret',
sandbox=True
)
Step 5: Implement OAuth Flow
const callbackUrl = 'http://localhost:3000/oauth/callback';
client.getRequestToken(callbackUrl, (error, oauthToken, oauthTokenSecret) => {
if (error) {
console.error('Failed to get request token:', error);
return;
}
req.session.oauthToken = oauthToken;
req.session.oauthTokenSecret = oauthTokenSecret;
const authorizeUrl = client.getAuthorizeUrl(oauthToken);
res.redirect(authorizeUrl);
});
app.get('/oauth/callback', (req, res) => {
const oauthVerifier = req.query.oauth_verifier;
client.getAccessToken(
req.session.oauthToken,
req.session.oauthTokenSecret,
oauthVerifier,
(error, oauthAccessToken, oauthAccessTokenSecret, results) => {
if (error) {
console.error('Failed to get access token:', error);
return res.status(500).send('Authentication failed');
}
req.session.accessToken = oauthAccessToken;
console.log('Token expires:', new Date(parseInt(results.edam_expires)));
res.redirect('/dashboard');
}
);
});
Step 6: Verify Connection
const authenticatedClient = new Evernote.Client({
token: req.session.accessToken,
sandbox: true
});
const userStore = authenticatedClient.getUserStore();
const noteStore = authenticatedClient.getNoteStore();
userStore.getUser().then(user => {
console.log('Authenticated as:', user.username);
console.log('User ID:', user.id);
}).catch(err => {
console.error('Authentication verification failed:', err);
});
Development Tokens (Sandbox Only)
For development, you can use a Developer Token instead of full OAuth:
- Create a sandbox account at https://sandbox.evernote.com
- Get a Developer Token from https://sandbox.evernote.com/api/DeveloperToken.action
- Use directly without OAuth flow:
const client = new Evernote.Client({
token: process.env.EVERNOTE_DEV_TOKEN,
sandbox: true
});
const noteStore = client.getNoteStore();
Note: Developer tokens are currently unavailable for production. Use OAuth for production applications.
Output
- Installed SDK package in node_modules or site-packages
- Environment variables configured
- Working OAuth flow implementation
- Successful connection verification
Error Handling
| Error | Cause | Solution |
|---|
Invalid consumer key | Wrong or unapproved key | Verify key from developer portal |
OAuth signature mismatch | Incorrect consumer secret | Check secret matches portal |
Token expired | Access token > 1 year old | Re-authenticate user via OAuth |
RATE_LIMIT_REACHED | Too many API calls | Implement exponential backoff |
Permission denied | Insufficient API key permissions | Request additional permissions |
Token Expiration
- Default token validity: 1 year
- Users can reduce to: 1 day, 1 week, or 1 month
- Expiration timestamp in
edam_expires parameter
- Implement token refresh before expiration
Resources
Next Steps
After successful auth, proceed to evernote-hello-world for your first note creation.