Linkedin Oauth2身份验证无效请求

时间:2015-02-16 00:33:54

标签: node.js express oauth-2.0

我已经完成了linkedin OAuth2身份验证的第1步和第2步(详见此处https://developer.linkedin.com/docs/oauth2),但我无法在第3步中检索访问令牌。我正在使用带有express.js的node.js服务器向https://www.linkedin.com/uas/oauth2/accessToken端点发出https发布请求,其中包含文档中列出的所有参数。我的请求代码是:

    // Request paramaters
    var post_data = querystring.stringify({
      'grant_type' : 'authorization_code',
      'code': auth_code,
      'redirect_uri': 'http://localhost:4200/authenticated',
      'client_id': '**************',
      'client_secret': '****************'
    });

    // Request options object
    var post_options = {
      host: 'www.linkedin.com',
      port: '443',
      path: '/uas/oauth2/accessToken',
      method: 'POST'
    };

    // Setup the request
    var post_req = https.request(post_options, function(res) {
      res.setEncoding('utf8');
      res.on('data', function (chunk) {
          console.log('Response: ' + chunk);
      });
    });

    // Post the data
    post_req.write(post_data);
    post_req.end();

但是,在发出请求时,服务器会从linkedin记录以下错误响应:

Response: {"error_description":"missing required parameters, includes an invalid parameter value, parameter more than once. : client_id","error":"invalid_request"}

1 个答案:

答案 0 :(得分:0)

Passport.js是Node.js常用的身份验证中间件,可以极大地简化和简化这些身份验证请求。它使用OAuth和OAuth 2.0协议支持来自100多个不同提供商(包括linkedin,facebook和twitter)的第三方认证。除了passport.js之外,这些方中的每一方都有自己的节点包(listed on the site),可以在节点应用程序中安装和需要,以开始对该特定提供程序进行身份验证。 Passport具有许多功能,包括持久会话和登录成功/失败回调。