naijun0403 / kakao-react

kakao react
MIT License
11 stars 1 forks source link

deviceUUID, accessToken을 찾는 방법에 대한 질문 #1

Open rhseung opened 2 months ago

rhseung commented 2 months ago
const { ReactClient, ReactionType } = require('kakao-react');

const client = ReactClient.create({
    accessToken: '',
    deviceUUID: ''
})

ReactClient 클래스의 인스턴스를 생성할 때 들어가는 authorizeConfig 인자의 accessToken, deviceUUID를 어떻게 찾는지 모르겠어서 질문 드립니다.

제가 노력한 바로는, deviceUUID는 아래와 같이 찾을 수 있었고, (맞는지는 모르겠습니다.)

const Settings = android.provider.Settings;

// 메신저봇R API2의 App 객체
const uuid = Settings.Secure.getString(App.getContext().getContentResolver(), Settings.Secure.ANDROID_ID);

accessToken은 다음 중 하나인 것 같는데 맞는지 모르겠습니다.


아래와 같은 코드를 실행해보니 오류가 발생했습니다.

"use strict";

var Settings = android.provider.Settings;
var { ReactClient, ReactionType } = require('kakao-react');

var client = ReactClient.create({
  accessToken: '...',
  deviceUUID: Settings.Secure.getString(App.getContext().getContentResolver(), Settings.Secure.ANDROID_ID)
}, {
  version: '10.3.4',
});

var bot = /* DBManager (https://github.com/NyangBotLab/DBManager_deploy) */

bot.on('message', function (chat, channel) {
  channel.send('before');
  try {
    channel.send(JSON.stringify(client.react(channel.id, chat.id, ReactionType.HEART)));
  } catch(e) {
    channel.send(e.stack);
  }
});

bot.start();

image

오류를 어떻게 고칠 수 있을지 모르겠어서 이슈를 올립니다.

naijun0403 commented 2 months ago

제가 올린 스크립트가 있습니다. 현재도 작동하는지는 잘 모르겠지만 참고해보시면 좋을꺼같습니다.

rhseung commented 2 months ago

스크립트를 읽고 각 키가 무엇을 의미하는지 알았습니다만 해당 스크립트에서 오류가 나는 97번 줄을 주석 처리하고 모듈로 사용하여 다음 코드를 작성했습니다.

"use strict";

var bot = /* DBManager */;

var { KakaoAuthJacker } = require('kakao-auth-jacker');
var jacker = new KakaoAuthJacker('com.kakao.talk');

var { ReactClient, ReactionType } = require('kakao-react');
var client = ReactClient.create({
  accessToken: String(jacker.authToken()),
  deviceUUID: String(jacker.deviceId())
},
//{version: '10.3.4'}
);

bot.on('message', function (chat, channel) {
  try {
    channel.send(JSON.stringify(client.react(channel.id, chat.id, ReactionType.HEART)));
  } catch (e) {
    channel.send(e + "\n" + e.stack);
  } 
});

bot.start();

위 코드를 실행하였더니, UNAUTHENTICATED 오류는 뜨지 않지만 에러가 catch에 들어왔습니다.

JavaException: java.lang.IllegalArgumentException: Unexpected char 0x01 at 0 in header value: {...accessToken...}-{...deviceUUID...}
    at file:/storage/emulated/0/msgbot/global_modules/kakao-react/src/request/index.js:89
    at file:/storage/emulated/0/msgbot/global_modules/kakao-react/src/client/react-client.js:28
    at react:19
    at file:/storage/emulated/0/msgbot/global_modules/BotOperator/DBManager/modules/emitter/eventemitter.js:75
    at file:/storage/emulated/0/msgbot/global_modules/BotOperator/DBManager/DBManager/DBManager.js:782

accessToken을 보니 image 앞에 이상한 유니코드가 존재합니다. 이 에러는 어떻게 고쳐야할까요??