我正在编写一个node.js应用程序以通过LinkedIn进行身份验证,但它不起作用。问题是我重定向到了正确的URL(看上去是正确的URL),但是没有转发到查询用户以授权其凭据的页面,而是收到“找不到页面”消息。
我创建了一个LinkedIn“应用”。以下是我的“授权重定向URL”:
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#
但是,我的代码没有看到上图的提示,而是给了他们这些:
答案 0 :(得分:1)
您在LinkedIn(redirect_uri
)中注册的http://localhost:3000/callback
与您实际发送的(http://www.localhost:3000/callback
)不同。这可能是问题所在,因为它会导致invalid redirect_uri error
。