首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Evernote登录

使用Evernote登录
EN

Stack Overflow用户
提问于 2015-06-04 17:52:02
回答 1查看 284关注 0票数 0

我想把Evernote和Meteor联系起来。

但是我有一个非常糟糕的时间,试图得到的Oauth令牌,我试图遵循这个例子Evernote样本流星,但已经相当老(2年),但我试着遵循它,我得到了这个想法。

我可以得到连接到evernote,登录页面和电子邮件验证,我的问题提出了流星方法。

handleCallback,它需要“验证”参数,在本例中是

代码语言:javascript
复制
ouath_token

再试一次。

evernote npm自述上,他们建议使用oAuthjs,我尝试使用这段代码。

代码语言:javascript
复制
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)没有找到有效的请求传输。

所以我被困在这里了。

EN

回答 1

Stack Overflow用户

发布于 2015-06-09 20:50:46

Evernote提供的npm模块包括帮助函数,以使OAuth工作。

通过以下方式安装Evernote npm模块:

代码语言:javascript
复制
  $npm install evernote

下面是我可以放在一起的在Evernote应用程序中实现OAuth的最简单的单个文件示例。只需在下面更改CONSUMER_KEYCONSUMER_SECRET的值,如果您安装了Evernote,它应该运行得很好:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30650790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档