Разница между oauth-shim, oauth-signature и oauth-запросом Node.js? - PullRequest
0 голосов
/ 25 октября 2018

Я новичок в Node js и все еще учусь на нем.Я строю REST API с NodeJS и ExpressJS и у меня возникают проблемы с настройкой OAuth 1.0 с ExpressJS.Мое требование - получить некоторые данные из API и опубликовать эти данные.У меня есть следующие данные авторизации OAuth 1.0:

  • Ключ потребителя: 'xxxxx'
  • Секрет потребителя: 'xxxx'
  • Токен: 'xxxx'
  • Секретный токен: 'xxxx'
  • Метод подписи: 'HMAC-SHA1'
  • Метка времени:
  • Одноразовый номер:
  • Версия: 1.0

Я натолкнулся на ouath-request, oauth-shim, oauth-signature и не совсем уверен, какой из них использовать правильно.

Кроме того, у меня есть несколько api-URL, которые мне понадобятся для получения данныхНапример,

URL: https://developer.shilpe.com/rest/V1/products/FS01 (Метод GET - получить продукт по идентификатору FS01)

URL: https://developer.shilpe.com/rest/V1/products (Метод GET - получить все продукты)

Вот мой код:

const express = require('express');
const bodyParser = require('body-parser');
const crypto = require('crypto');
//const request = require('request');
//const OAuth = require('oauth-1.0a');
const OAuth = require('oauth-request'); //for now im trying with this
//const oauthshim = require('oauth-shim');
//const OAuth = require('oauth-signature');
const config = require('./config'); //I have a config.js file which stores all the keys and tokens

const server = express();

server.use(bodyParser.urlencoded({ extended: true }));
server.use(express.json());

//here i need to use one of the oauth packages, for now im using oauth-request
const shilpe = OAuth({
    consumer: 
    { 
        key: config.MAGENTO.consumerKey, 
        secret: config.MAGENTO.consumerSecret
    },
    signature_method: 'HMAC-SHA1',
    hash_function(base_string, key) 
    {
        return crypto.createHmac('sha1', key).update(base_string).digest('base64');
    }
});

 shilpe.setToken({
     key: config.MAGENTO.tokenKey,
     secret: config.MAGENTO.tokenSecret
 });

//post using expressJS
server.post('/get-shilpe-products', (req, res) => {
   console.log(" -> Server log : get-shilpe-product API request");

//here i will call my url and process with my function
   const URL = 'https://developer.shilpe.com/rest/V1/products/FS01';
   shilpe.get({
      url: URL,
      json: true
   }, function(err, res, products) {
      console.log("result: " + products);
   });
});

//My port
const port = process.env.PORT || 8000;
server.listen(port, () => console.log(`Server is up and running on port ${port}...`));

ВЫХОД этой программы:

введите описание изображения здесь

Что я делаюнеправильно?Есть ли лучший способ реализовать авторизацию oauth 1.0 с ExpressJS?

POSTMAN ВЫХОД API-адреса с авторизацией oauth:

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...