如何使用Node.js和simple-oauth2

时间:2018-11-28 02:03:21

标签: javascript node.js oauth linkedin-api

我正在编写一个node.js应用程序以通过LinkedIn进行身份验证,但它不起作用。问题是我重定向到了正确的URL(看上去是正确的URL),但是没有转发到查询用户以授权其凭据的页面,而是收到“找不到页面”消息。

我创建了一个LinkedIn“应用”。以下是我的“授权重定向URL”:

enter image description here

HTML

  <div id="root">
        <button id="auth-button"> Login </button>
  </div>

客户端JS

function onSignInButtonClick() {
  // Open the Auth flow in a popup.
  window.open('/redirect', 'firebaseAuth', 'height=315,width=400');
};

var button = document.getElementById("auth-button");

button.addEventListener("click",function(){
    onSignInButtonClick();
});

服务器代码

const credentials = {
 client: {
   id: "LINKEDIN_CLIENT_ID-1-2-3-4", 
   secret: "LINKEDIN_CLIENT_SECRET-1-2-3-4", 
 },
 auth: {
   tokenHost: 'https://www.linkedin.com/oauth/v2/authorization'
 }
};


const oauth2 = require('simple-oauth2').create(credentials);

var express = require("express");
var app = express();
app.use(express.static("public"));


app.get('/', (req, res) => {

   res.sendFile('landing.html',{
      root:'public'
   })

});




app.get('/redirect', (req, res) => {

  const redirectUri = oauth2.authorizationCode.authorizeURL({
    response_type:"code",
    redirect_uri: "http://www.localhost:3000/callback",
    state: "some-cryptic-stuff-98471871987981247"
  });

  res.redirect(redirectUri);
});


app.get('/callback',(req, res) => {
  console.log("linkedin-callback route invoked");

  res.send("linked in callback working")

});


app.listen(3000, function(err) {
    console.log('Server works');
});

当用户单击按钮时,他们将被重定向到一个URL,该URL与在LinkedIn开发人员参考中作为“示例调用”(如下)给出的URL具有相同的结构。

https://developer.linkedin.com/docs/oauth2#

enter image description here

但是,我的代码没有看到上图的提示,而是给了他们这些:

enter image description here

1 个答案:

答案 0 :(得分:1)

您在LinkedIn(redirect_uri)中注册的http://localhost:3000/callback与您实际发送的(http://www.localhost:3000/callback)不同。这可能是问题所在,因为它会导致invalid redirect_uri error