tessl install github:jeremylongshore/claude-code-plugins-plus-skills --skill evernote-install-authInstall 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".
Review Score
84%
Validation Score
12/16
Implementation Score
77%
Activation Score
90%
Set up Evernote SDK and configure OAuth 1.0a authentication for accessing the Evernote Cloud API.
consumerKey and consumerSecret# Node.js
npm install evernote
# Python
pip install evernote# Create .env file
cat << 'EOF' >> .env
EVERNOTE_CONSUMER_KEY=your-consumer-key
EVERNOTE_CONSUMER_SECRET=your-consumer-secret
EVERNOTE_SANDBOX=true
EOF// Node.js - Initialize client for OAuth flow
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
});# Python - Initialize client
from evernote.api.client import EvernoteClient
client = EvernoteClient(
consumer_key='your-consumer-key',
consumer_secret='your-consumer-secret',
sandbox=True
)// Step 5a: Get request token and redirect URL
const callbackUrl = 'http://localhost:3000/oauth/callback';
client.getRequestToken(callbackUrl, (error, oauthToken, oauthTokenSecret) => {
if (error) {
console.error('Failed to get request token:', error);
return;
}
// Store tokens in session (required for callback)
req.session.oauthToken = oauthToken;
req.session.oauthTokenSecret = oauthTokenSecret;
// Redirect user to Evernote authorization page
const authorizeUrl = client.getAuthorizeUrl(oauthToken);
res.redirect(authorizeUrl);
});// Step 5b: Handle OAuth callback
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');
}
// Store access token securely (valid for 1 year by default)
req.session.accessToken = oauthAccessToken;
// Token expiration included in results.edam_expires
console.log('Token expires:', new Date(parseInt(results.edam_expires)));
res.redirect('/dashboard');
}
);
});// Create authenticated client and verify
const authenticatedClient = new Evernote.Client({
token: req.session.accessToken,
sandbox: true
});
const userStore = authenticatedClient.getUserStore();
const noteStore = authenticatedClient.getNoteStore();
// Verify connection
userStore.getUser().then(user => {
console.log('Authenticated as:', user.username);
console.log('User ID:', user.id);
}).catch(err => {
console.error('Authentication verification failed:', err);
});For development, you can use a Developer Token instead of full OAuth:
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.
| 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 |
edam_expires parameterAfter successful auth, proceed to evernote-hello-world for your first note creation.