javascript - Evernote OAuth 登录 Javascript

标签 javascript oauth parse-platform evernote

我尝试通过 OAuth(使用 OAuth JS)为我的 Web 应用程序创建 Evernote 连接,正如 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

下面是我可以整理的在 Evernote 应用程序中实现 OAuth 的最简单的单个文件示例。只需更改下面的 CONSUMER_KEYCONSUMER_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);

关于javascript - Evernote OAuth 登录 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28131177/

相关文章:

javascript - 将图像上传到解析帐户

ios - 用于解析 iOS 应用程序的 Facebook 登录无法正常工作

swift - 如何在自定义 Parse 类中更新 NSDictionary?

javascript - React Native 元素类型无效。检查渲染方法

javascript - jquery 最小和最大长度验证

php - 使用 Google OAuth 进行身份验证

python - 从 gdata.gauth.OAuthHmacToken python 对象中检索 token 和 secret

javascript - 使用 underscore.js 过滤数组

javascript - 如何在点击时删除多个播放列表项目?

java - 如何在 Java 中生成与 Python 示例等效的 HMAC?