Evernote OAuth 登录 Javascript
Evernote OAuth Login Javascript
我尝试按照 Evernote 网页上的描述通过 OAuth(使用 OAuth JS)为我的网络应用程序创建 Evernote 连接。我的问题是响应总是成功但数据为空。
var hostName = "http://sandbox.evernote.com";
var options,oauth;
options = {
consumerKey: consumer_key,
consumerSecret: "consumer_secret,
callbackUrl : "https://testEvernote.parseapp.com",
signatureMethod : "HMAC-SHA1",
};
oauth = OAuth(options);
oauth.request({'method': 'GET', 'url': hostName + '/oauth',
'success': function(data){
alert("Succes:"+data.text);
}, 'failure': function(data){
alert("Failure:"+data.text);
}});
有人知道这段代码有什么问题吗?
谢谢 ;)
Evernote 不允许客户端 Javascript 访问。如果您想使用 Javascript 访问 Evernote API.
,Evernote 需要使用 Node.js(或 Apache Cordova)
Evernote 提供的 npm 模块包含帮助 OAuth 工作的函数。
通过以下方式安装 Evernote npm 模块:
$npm install 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);
我尝试按照 Evernote 网页上的描述通过 OAuth(使用 OAuth JS)为我的网络应用程序创建 Evernote 连接。我的问题是响应总是成功但数据为空。
var hostName = "http://sandbox.evernote.com";
var options,oauth;
options = {
consumerKey: consumer_key,
consumerSecret: "consumer_secret,
callbackUrl : "https://testEvernote.parseapp.com",
signatureMethod : "HMAC-SHA1",
};
oauth = OAuth(options);
oauth.request({'method': 'GET', 'url': hostName + '/oauth',
'success': function(data){
alert("Succes:"+data.text);
}, 'failure': function(data){
alert("Failure:"+data.text);
}});
有人知道这段代码有什么问题吗?
谢谢 ;)
Evernote 不允许客户端 Javascript 访问。如果您想使用 Javascript 访问 Evernote API.
,Evernote 需要使用 Node.js(或 Apache Cordova)Evernote 提供的 npm 模块包含帮助 OAuth 工作的函数。
通过以下方式安装 Evernote npm 模块:
$npm install 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);