我想把Evernote和Meteor联系起来。
但是我有一个非常糟糕的时间,试图得到的Oauth令牌,我试图遵循这个例子Evernote样本流星,但已经相当老(2年),但我试着遵循它,我得到了这个想法。
我可以得到连接到evernote,登录页面和电子邮件验证,我的问题提出了流星方法。
handleCallback,它需要“验证”参数,在本例中是
ouath_token再试一次。
在evernote npm自述上,他们建议使用oAuthjs,我尝试使用这段代码。
var hostName = "http://sandbox.evernote.com";
var options,oauth;
options = {
consumerKey: 'xxxxxxxxx',
consumerSecret: 'xxxxxxxxx',
callbackUrl : 'http://localhost:3000/oauth/auth',
signatureMethod : "HMAC-SHA1",
};
oauth.request({'method': 'GET', 'url': hostName + '/oauth',
'success': function(data){
console.log(data);
}, 'failure': function(data){
console.log(data);
}});但它又回来了
(STDERR)没有找到有效的请求传输。
所以我被困在这里了。
发布于 2015-06-09 20:50:46
Evernote提供的npm模块包括帮助函数,以使OAuth工作。
通过以下方式安装Evernote npm模块:
$npm install evernote下面是我可以放在一起的在Evernote应用程序中实现OAuth的最简单的单个文件示例。只需在下面更改CONSUMER_KEY和CONSUMER_SECRET的值,如果您安装了Evernote,它应该运行得很好:
var Evernote = require('evernote').Evernote;
var http = require("http");
var url = require("url");
CONSUMER_KEY="Put your consumer key here";
CONSUMER_SECRET="put your consumer secret here";
if (CONSUMER_KEY === "Put your consumer key here"){
console.error("\nPlease enter your Evernote consumer key and secret\n\nIf you don't have a key you can get one at:\nhttps://dev.evernote.com/#apikey\n")
process.exit(1)
}
var global = {};
global.oauthToken = '';
global.oauthSecret = '';
function getOauthVerifier(url) {
var regex = new RegExp("[\\?&]oauth_verifier=([^&#]*)"),
results = regex.exec(url);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var handler = function(request, response) {
var params = url.parse(request.url)
var pathname = params.pathname;
console.log("Request for " + pathname + " received.");
var client = new Evernote.Client ({
consumerKey: "Put your consumer key here",
consumerSecret: "put your consumer secret here",
sandbox: true
});
if (pathname == "/"){
var callbackUrl = 'http://localhost:8888/oauth';
client.getRequestToken(callbackUrl, function(err, oauthToken, oauthSecret, results){
if(err) {
console.log(err);
}
else {
global.oauthToken = oauthToken;
global.oauthSecret = oauthSecret;
console.log("set oauth token and secret");
var authorizeUrl = client.getAuthorizeUrl(oauthToken);
console.log(authorizeUrl);
response.writeHead(200, {"Content-Type":"text/html"});
response.write("Please <a href=\""+authorizeUrl+"\">click here</a> to authorize the application");
response.end();
}
});
}
else if (pathname == "/oauth"){
client.getAccessToken(
global.oauthToken,
global.oauthSecret,
getOauthVerifier(params.search),
function(error, oauthAccessToken, oauthAccessTokenSecret, results) {
if(error) {
console.log("error\n\n\n");
console.log(error);
}
else {
response.writeHead(200, {"Content-Type":"text/html"});
response.write(oauthAccessToken);
response.end();
}
}
);
}
else {
response.writeHead(200, {"Content-Type":"text/html"});
response.write("not a valid URL <a href=\"/\"> GO HOME </a>");
response.end();
}
};
http.createServer(handler).listen(8888);https://stackoverflow.com/questions/30650790
复制相似问题