storycraft / node-kakao

Loco protocol compatible library
MIT License
411 stars 114 forks source link

로그인 문제 #442

Closed je0404 closed 3 years ago

je0404 commented 3 years ago

Describe the bug

아래 코드처럼 작성해서 node ./index.js를 하게되면

const LOCO = require('node-kakao');`
const readline = require('readline');

const EMAIL = ''
const PASSWORD = ''

const DEVICE_UUID = ''
const DEVICE_NAME = ''

async function main() {
  const form = {
    email: EMAIL,
    password: PASSWORD,

    // This option force login even other devices are logon
    forced: true,
  };

  const api = await LOCO.AuthApiClient.create(DEVICE_NAME, DEVICE_UUID);
  const loginRes = await api.login(form);
  if (loginRes.success) throw new Error('Device already registered!');
  if (loginRes.status !== LOCO.KnownAuthStatusCode.DEVICE_NOT_REGISTERED) {
    throw new Error(`Web login failed with status: ${loginRes.status}`);
  }

  const passcodeRes = await api.requestPasscode(form);
  if (!passcodeRes.success) throw new Error(`Passcode request failed with status: ${passcodeRes.status}`);

  const inputInterface = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
  });
  const passcode = await new Promise<string>((resolve) => inputInterface.question('Enter passcode: ', resolve));
  inputInterface.close();

  // Giving permanent value to false will allow to login only once.
  const registerRes = await api.registerDevice(form, passcode, true);
  if (!registerRes.success) throw new Error(`Device registration failed with status: ${registerRes.status}`);

  console.log(`Device ${DEVICE_UUID} has been registered`);

  // Login after registering devices
  const loginAfterRes = await api.login(form);
  if (!loginAfterRes.success) throw new Error(`Web login failed with status: ${loginAfterRes.status}`);
  console.log(`Client logon successfully`);
}
main().then();

스마트폰으로 인증요청 알림은 옵니다 근데 터미널에서 오류 표시가 납니다.

PS C:\Users\A\Desktop\lo> node .\index.js
C:\Users\A\Desktop\lo\index.js:43
  const passcode = await new Promise<string>((resolve) => inputInterface.question('Enter passcode: ', resolve));
                         ^

TypeError: Promise resolver undefined is not a function
    at new Promise (<anonymous>)
    at main (C:\Users\A\Desktop\lo\index.js:43:26)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

const LOCO = require('node-kakao'); const readline = require('readline');

이 부분이 잘못되어 그런걸까요?

storycraft commented 3 years ago

잘못된 코드

-const passcode = await new Promise<string>((resolve) => inputInterface.question('Enter passcode: ', resolve));
+const passcode = await new Promise((resolve) => inputInterface.question('Enter passcode: ', resolve));

로 수정하세요