Vk-io: implicitFlowUser๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2019๋…„ 03์›” 09์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: negezor/vk-io

{ AuthError: Could not log in
    at ImplicitFlowUser.run (file:///Users/andreisoroka/git/temp/node_modules/vk-io/lib/index.mjs:1704:17)
    at processTicksAndRejections (internal/process/next_tick.js:81:5)
  code: 'AUTHORIZATION_FAILED',
  name: 'AuthError',
  pageHtml: null }

์–ด๋–ค ๋ฒ„์ „์˜ vk-io ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

4.0.0-rc.15

์–ด๋–ค ๋ฒ„์ „์˜ Node.js๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

11.11.0

๋ญ ํ–ˆ์–ด?

๋‹จ์ˆœ ๊ถŒํ•œ ๋ถ€์—ฌ

import VK from "vk-io";

export default function getToken({login, password}) {
  const vk = new VK({
    appId: process.env.VK_APP_ID,
    login,
    password,
  });
  return vk.auth.implicitFlowUser().run()
}

์ฝ”๋“œ์— ๋“ค์–ด๊ฐ€์„œ ๋””๋ฒ„๊น…ํ•œ ๊ฒฐ๊ณผ "์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์˜ˆ/์•„๋‹ˆ์š”" ํŽ˜์ด์ง€์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ ๋ฒ„์ „ 4.0.0-rc.7๋กœ ๋กค๋ฐฑํ–ˆ๋Š”๋ฐ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๋ก : ์—…๋ฐ์ดํŠธ์™€ ํ•จ๊ป˜ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๊นŒ?

ํ† ํฐ ๋ฐ›๊ธฐ

์‹ค์ œ ๊ฒฐ๊ณผ๋Š” ์–ด๋• ๋‚˜์š”?

์Šน์ธ ์˜ค๋ฅ˜

์žฌํ˜„์ด ์–ด๋ ค์šฐ์‹œ๋ฉด ์ œ๊ฐ€ ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค)))

๋ชจ๋“  6 ๋Œ“๊ธ€

๊ฐ„๋‹จํžˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด์•˜์ง€๋งŒ ๊ถŒํ•œ ๋ถ€์—ฌ์™€ ๊ด€๋ จํ•˜์—ฌ ํŠน๋ณ„ํžˆ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. HTML ํŽ˜์ด์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

2019๋…„ 2์›” 15์ผ ์ดํ›„์— ๋ฉ”์‹ ์ € ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ง€์›์—์„œ ํ…Œ์ŠคํŠธ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ด€๋ฆฌ์ž ํ‚ค๋กœ ๋ฉ”์‹œ์ง€ ์„น์…˜์˜ ๋ฐฉ๋ฒ• ์ž‘๋™์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ๋ฉ”์‹œ์ง€ API์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์กฐ์ •์„ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”

์†”๋ฃจ์…˜์€ ์˜ˆ๋ฅผ ๋“ค์–ด Android ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

async function loginVK() {

    let login = await rl.questionAsync("Login: ");

    console.log("Password: ");
    rl.hideMode = true;
    let password = await rl.questionAsync("");
    rl.hideMode = false;

    vk.setOptions({ login, password, });

    const direct = vk.auth.androidApp();

    vk.captchaHandler = async ({ src }, retry)=> {
        let key = await rl.questionAsync("Enter captcha ["+src+"]: ");

        try {
            await retry(key);
            console.log('Success');
        } catch (e) { console.error(e); }
    };
    vk.twoFactorHandler = async (none, retry)=> {
        let code = await rl.questionAsync("Enter twoFactor code: ");

        try {
            await retry(code);

            console.log('Success');
        } catch (e) { console.error(e); }
    };

    let res = false;
    try {
        res = await direct.run();
        console.log(res);
    } catch(e) { console.error(e); }

    return res;
}

๋˜ํ•œ ๋กœ๊ทธ์ธ ์˜ค๋ฅ˜.
const script = $('script[type="text/javascript"][language="javascript"]').text(); ๋Š” ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. xs ์™œ, html์— ์„ ํƒ๊ธฐ์— ์ ํ•ฉํ•œ ํƒœ๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜ ์ž์‹ ์„ ์œ„ํ•ด ํ•ซํ”ฝ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
const script = $('script[type="text/javascript"][language="javascript"]').text(); ์„ const script = $.html(); ๋กœ ๋Œ€์ฒด

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, ์ด์ œ์„œ์•ผ ๋ดค์Šต๋‹ˆ๋‹ค.
@spb-web ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ํ•˜๊ธฐ ์–ด๋ ต์ง€ ์•Š๋‚˜์š”?
@negezor ๋‚˜๋„ ๋ณด์•˜๊ณ ์ด ๋ฌธ์ œ์˜ ์›์ธ์ด ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๊ด€๋ จ ๋“œ๋กญ ํŽ˜์ด์ง€? ์•„๋‹ˆ๋ฉด ๋‚˜์—†์ด ๊ด€๋ฆฌ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@AndreiSoroka , ์–ด๋ ต์ง€ ์•Š๋‹ค๋ฉด ๋ฒ„๋ฆฌ์„ธ์š”)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰