나에게 카카오톡 메시지 보내기 오류 401이 뜹니다

디벨로퍼스 앱ID를 알려주세요. - 986015

안녕하세요. 카카오 디벨로퍼스 사용자입니다. 다름이 아니라 제가 라즈베리파이 파이썬을 이용해 카카오톡으로 나에게 메시지 보내기 코드를 실행하였는데 아래 사진과 같이 401이 뜨며 메시지가 오지 않습니다. 코드엔 오류가 없이 실행되는 거 같은데 메시지가 안 오는 이유가 무엇인지 알 수 있을까요?

카카오디벨로퍼스에서 제공하는 API는 에러 메시지를 전달합니다.
관련 코드 블럭 기재해주세요.

import RPi.GPIO as GPIO # GPIO 라이브러리를 사용함
import time
import json # json을 이용해 데이터를 보냄
import requests

url = “https://kapi.kakao.com/v2/api/talk/memo/default/send

카카오톡을 보낼 수 있는 링크를 설정함

headers = {
“Content-Type”: “application/x-www-form-urlencoded”,
“Authorization”: “Bearer”+
“NWNVzgMjgxQZIDK3Rt8xTm0grYFhXjcpnBgKPXVcAAABjsxzPvWoblpFv_zasg”
# 토큰을 발급받아 토큰을 방급받은 사람한테 메시지가 오도록 설정함
#(단, 토큰은 6시간마다 재발급 받아야 함 )
}

data = {
“template_object” : json.dumps({
“object_type” : “text”, # 오브젝트 타입을 텍스트로 설정함
“text” : “알코올이 감지되었습니다.”,
“link” : {
“web_url” : “http://www.jkelec.co.kr” # 카카오톡을 보낼 링크를 설정함
},
})
}

ALCOHOL_SENSOR_PIN = 17 # 알코올 센서가 연결된 GPIO 핀
SERVO_PIN = 18 # 서보 모터가 연결된 GPIO 핀

GPIO.setmode(GPIO.BCM) # GPIO BCM모드를 사용함
GPIO.setup(ALCOHOL_SENSOR_PIN, GPIO.IN)
GPIO.setup(SERVO_PIN, GPIO.OUT)

pwm = GPIO.PWM(SERVO_PIN, 50) # 50Hz PWM

def move_servo():
pwm.start(2.5) # 서보 모터 중간 위치
time.sleep(1) # 1초 동안 대기
pwm.ChangeDutyCycle(10) # 서보 모터 최소 위치
time.sleep(5) # 5초 동안 대기
pwm.stop()
try:
while True:
if GPIO.input(ALCOHOL_SENSOR_PIN) == GPIO.HIGH:
print(“Alcohol Detected!”)

만약 알코올이 감지되었을 때 Alcohol Detected!가 출력 됨

        response = requests.post(url, headers=headers, data=data)

카카오톡 메시지를 보냄

        print(response.status_code)
    else:
        move_servo() # 서브모터 작동
        print("No Alcohol Detected!")

알코올이 감지되지 않았을 때 No Alcohol Detected! 출력

        time.sleep(2) # 2분 동안 서브모터 작동 안함

except KeyboardInterrupt:
pass

finally:
pwm.stop()
GPIO.cleanup()

토큰은 코드 돌릴때마다 재발급 받고 있습니다.

카카오에서 전달한 에러 메시지는 아래와 같습니다.
로깅하셔서 에러메시지 확인하시면 좋을 것 같습니다.

{"code":-401,"msg":"ip mismatched! callerIp=10.205.57.24. check out registered ips."}

보안: 허용 IP 주소 시작하기 | Kakao Developers 시작하기

에러 메시지에 뜨는 아이피를 모두 추가하였는데도 401 에러가 뜨고 사진과 같은 에러 메시지가 뜹니다. 작년에 라즈베리파이 파이썬을 이용해 글에 있는 코드 그대로 돌려보았을 땐 메시지가 잘 보내졌습니다. 하지만 원래 사용하던 라즈베리파이 os에 문제가 생겨 새로운 os에 시도해보았는데 계속 401 오류가 뜹니다. 새로운 os가 인터넷이 안돼 공유기를 연결해 사용 중인데 혹시 이거와 관련 있을까요?

해당 에러는 API 호출 시, 필요 파라메터 설정이 안되면 발생합니다.

[faq] 친구 목록 api, 메시지 전송 api를 연동하는 과정에서 자주 겪는 에러

관련 코드 블럭 공유해주시겠어요?

코드는 위에 보내드린 코드를 사용하였습니다. 사진과 같이 템플릿 오브젝트에 "text"라고 적으면 아래에 있는 사진과 같은 에러 메시지가 뜨고 템플릿 오브젝트에 아무것도 적지 않으면 위 사진과 같은 에러 메시지가 뜹니다.


네, template_object 파라메터를 잘못 작성하셔서 그렇습니다.
가이드 참고하셔서 작성해주세요.

카카오톡 메시지: JavaScript | Kakao Developers 카카오톡 메시지: JavaScript

해결됐습니다. 감사합니다!

1개의 좋아요