Ошибки Textnow API при входе через скрипт - PullRequest
0 голосов
/ 01 февраля 2019

При попытке войти в textnow через API с использованием правильного имени пользователя и пароля возникает следующая ошибка:

UnhandledPromiseRejectionWarning: Error: 401 Unauthorized
at _response.transport.request.then (E:\nodejs\node_modules\snekfetch\src\index.js:193:21)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:19732) UnhandledPromiseRejectionWarning: Unhandled promise rejection.            
This error originated either by throwing inside of an async function without
a catch block, or by rejecting a promise which was not handled with .catch().
(rejection id: 2)            

Ниже приведен код используемого API-интерфейса:

module.exports.textnowLogin = (email, password) => {
   return new Promise((resolve, reject) => {
   let json = { "password": password, "username": email };
   let queryEndpoint = "sessions?client_type=TN_ANDROID";
   let signature = md5(`${tnSignatureKey}POST${queryEndpoint}${JSON.stringify(json)}`);

    snekfetch.post(`https://api.textnow.me/api2.0/${queryEndpoint}&signature=${signature}`)
    .set("Content-Type", "application/json")
    .send(json)
    .then((result) => {
      return resolve(result.body);
    }).catch(reject);
  });
};

Вот как я использую этот метод в моем js-файле:

const textNow = require('textnow-api');
textNow.login(username, password).then(client => {
  console.log(`Logged in as ${client.username}`);
});`

Это определенно должно быть проблемой на стороне сервера, нет?Что-то должно быть не так на конце Textnow.Что я могу сделать, чтобы обойти это?

РЕДАКТИРОВАТЬ: const snekfetch = require("snekfetch"), md5 = require("md5"), tnSignatureKey = "f8ab2ceca9163724b6d126aea9620339";

Откуда появился этот ключ?Возможно, если будет сгенерирован новый, то ошибка авторизации будет решена?

В качестве дополнительного примечания другой потенциальной проблемой может быть то, что для client_type задано значение ANDROID, и я пытаюсь использовать учетную запись iOS для входа в систему.Однако всякий раз, когда я пытаюсь использовать учетную запись Android для входа в систему, я получаю 400 неверных запросов, как, например, Textnow не распознает учетные данные учетной записи.

1 Ответ

0 голосов
/ 01 февраля 2019

В коде могут быть и другие ошибки, но первая ошибка - создание дополнительного обещания.Вот версия кода, которая решает это и должна либо работать, либо проще в отладке ...

module.exports.textnowLogin = (email, password) => {
  let json = { "password": password, "username": email };
  let queryEndpoint = "sessions?client_type=TN_ANDROID";
  let signature = md5(`${tnSignatureKey}POST${queryEndpoint}${JSON.stringify(json)}`);

  let url = `https://api.textnow.me/api2.0/${queryEndpoint}&signature=${signature}`;
  return snekfetch.post(url).set("Content-Type", "application/json").send(json).then(result => {
    return result.body;
  });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...