네이버카페 api로 글쓰기 방법은 네이버 디벨로퍼즈에 상세한 설명이 되어 있다. 백엔드로 자바, PHP, 파이썬, C#등의 언어를 통해 프로그램을 짜야한다. api호출 예제까지도 잘 정리가 되어 있어 간단히 따라며하면 쉽게 적용까지는 할 수있다. 허나 필자의 경우엔 문과 출신에 코딩에는 까막눈이라 따라하려고 해도 가이드가 없이는 쉽지 않다. 다행이도 프로그램을 짜는데 있어서 이미 많은이들의 손을 거쳐 잘 다듬어진 공개된 소스들이 많이 도움이 되었다. 하지만 그 주에서도 도무지 찾을 수 없는 부분이 있었다. 아무래도 너무 기초적인 부분이라 다른 코더들은 금방 이해할 부분이기에 상세한 설명이 없었던 듯하다. 허나 필자같이 까막눈에 일일이 검색에 의존해서 프로그램을 짜는 초보의 경우엔 기초가 부족해 늘 헤매기 마련이다.
네이버카페 api 글쓰기를 제작하면서 필자가 격었던 문제는 카페 글쓰기 변수를 지정하는 부분에서 어려움을 겪었다. 네이버 카페에 api 글쓰기를 통해 글을 쓰면 공개설정에서 맴버공개가 디볼트 값이다. 이 값을 전체 공개로 바꾸고 싶었다. 해당 변수 요청값은 이미 네이버 디벨로퍼즈에 공개되어 있었다. 이걸 잘 가공해서 코드 내에 입력만 하면 해결되는 문제다. 그런데 어떻게 가공해야 하는지 그리고 어디에 이 값을 넣어야 하는지 도무지 까막눈이라 해멜 수 밖에 없었다.무식하게 이곳저곳에 넣어보다가 몇시간을 고생한 끝에 마침내 성공했다. 누군가는 들으면 피식하고 웃을 일인지도 모른다. 허나 필자와 같이 까막눈 초보 코더를 위해 이 곳에 공유한다. 이 글은 파이썬을 기준으로 한다.
게시글 공개 설정 변수 값은 openyn이고 boolean 즉, true/false 형식의 변수다. 기본값이 false이기 때문에 값을 true로 지정해서 파라미터에 입력해 주면 api 게시글이 전체 공개로 발행이 된다.
# 네이버 카페 Open API 예제 - 글쓰기
import os
import sys
import urllib.request
token = "YOUR_ACCESS_TOKEN"
header = "Bearer " + token # Bearer 다음에 공백 추가
clubid = "CLUB_ID" # 카페의 고유 ID값
menuid = "MENU_ID" # (상품게시판은 입력 불가)
url = "https://openapi.naver.com/v1/cafe/" + clubid + "/menu/" + menuid + "/articles"
subject = urllib.parse.quote("[subject] 네이버 Cafe api Test Python")
content = urllib.parse.quote("[content] 네이버 Cafe api Test Python")
data = "subject=" + subject + "&content=" + content
request = urllib.request.Request(url, data=data.encode("utf-8"))
request.add_header("Authorization", header)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode==200):
response_body = response.read()
print(response_body.decode('utf-8'))
else:
print("Error Code:" + rescode)
## 출처 https://developers.naver.com/docs/cafe/api/ ##
위 코드 내용은 네이버 디벨로퍼에 소개된 예제이다. 이 코드 예제를 잘 가공하면 네이버 카페 api 글쓰기를 할 수 있다. 이 기본 베이스가 되는 코드에 위에서 확인한 게시글 공개 설정 변수값인 openyn의 값을 true로 지정해 주기만 하면 해결이 된다. 따로 변수를 지정해 입력해보기도 하고 requset내에 값으로 넣어보기도 하고 data에 넣어보기도 했다. 그런데 잘 되지 않았다. 정확한 위치와 입력 값을 어떻게 지정해야 되는지 모르는 상황에서 답답할 노릇이었다. 이 방법 저방법 시도한 끝에 data에 해당 값을 넣으면 정상 발행 되는 것을 확인했다. 아래와 같이 값을 넣어주면 공개설정에서 전체 공개가 된다.
# 네이버 카페 Open API 예제 - 글쓰기
import os
import sys
import urllib.request
token = "YOUR_ACCESS_TOKEN"
header = "Bearer " + token # Bearer 다음에 공백 추가
clubid = "CLUB_ID" # 카페의 고유 ID값
menuid = "MENU_ID" # (상품게시판은 입력 불가)
url = "https://openapi.naver.com/v1/cafe/" + clubid + "/menu/" + menuid + "/articles"
subject = urllib.parse.quote("[subject] 네이버 Cafe api Test Python")
content = urllib.parse.quote("[content] 네이버 Cafe api Test Python")
data = "subject=" + subject + "&content=" + content + "&openyn=" + "true" # "&openyn=" + "true" 게시글 전체 공개 // "&openyn=" + "true" 맴버공개시 삭제
request = urllib.request.Request(url, data=data.encode("utf-8"))
request.add_header("Authorization", header)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode==200):
response_body = response.read()
print(response_body.decode('utf-8'))
else:
print("Error Code:" + rescode)
data 부분에 “&openyn=” + “true”가 추가된 것을 확인할 수 있다. 이 부분에 해당 값을 넣어주면 파라미터에 해당 값이 포함되 전송이 된다. 이 정도면 적어도 왠만한 이들은 다 이해할 수 있기에 상세한 설명은 생략하도록 하겠다.