반응형

어제 받은 토큰으로 메세지 발송 시도~~~ 하였으나

 

코드는 돌았는데...메세지 무반응....

알아보니

 

"로그인 시 카카오계정 세션의 인증 시간은 기본 24시간이며, 최초 인증 후 세션 시간은 변경되지 않습니다. 사용자가 로그인 유지를 선택한 경우에는 인증 시간이 1입니다. "

뚜둥..쓰 

 

우선 토큰 부터 다시 파해치자.

# https://kauth.kakao.com/oauth/authorize?client_id={api값}&redirect_uri={설정하신 리다이렉션 url}&response_type=code 

위 url로 접속하면  code 값을 반환해줍니다.

 

====================코드===============================

import requests
import json

url = "https://kauth.kakao.com/oauth/token"

data = {
"grant_type" : "authorization_code",
"client_id" : "{apt값}",
"redirect_uri" : '설정하신 리다이렉션 url',
"code" : "반환 된 code 값"
}

response = requests.post(url, data=data)
tokens = response.json()


if "access_token" in tokens:
    with open("kakao_token.json", "w") as fp:
        json.dump(tokens, fp)
        print("Tokens saved successfully")
else:
    print(tokens)

====================코드===============================

실행해주세요.

토큰을 저장 하였습니다 석세스~~

 

생성 된 토큰에 유효기간이 있음

딕셔너리 형태 반환 값 중 , "expires_in": 12333, 숫자 초단위  잔여 유효시간을 전달 합니다!-

 

아래 코드로 토큰을 리프레시하실 수 있습니다.

====================코드===============================

import requests
import json

rest_api_key = 'aa462514c84043fba37df1f82aaf6f4b'
redirect_uri = 'https://localhost:3000'
url_token = 'https://kauth.kakao.com/oauth/token'
authorize_code = 'CK5cVxsxO6I4zBsMaMgo1AWl7wf9vMGhzsACPuD7phtO_aQx8jjk_91O5O-PbD7RnFFdvgo9c00AAAGI4mjg8A'

try:
    with open("kakao_token.json","r") as fp: # 기존에 저장된 token 파일이 있는지 찾아봅니다.
        tokens = json.load(fp)
        if "error_code" in tokens:
            tokens={}
except Exception as e:
    print(e)
    tokens={}

if tokens == {}:
    # 신규 발급이 필요한 경우
    param = {
        'grant_type':'authorization_code',
        'client_id':rest_api_key,
        'redirect_uri':redirect_uri,
        'code': authorize_code, # 한번 발급되면 authorize_code는 무효화됩니다. 
    }

    response = requests.post('https://kauth.kakao.com/oauth/token', data=param)
    tokens = response.json() # token 발급 api로 발급된 정보들을 kakao_token.json 파일에 저장합니다.
    if "error_code" in tokens:
        print(tokens["error_code"])
    else:
        with open("kakao_token.json","w") as fp:
            json.dump(tokens, fp)
            print("파일로 토큰 정보 저장!")
else:
# 기존 발급된 정보가 있을 경우
    headers = {
        "Authorization": "Bearer " + tokens["access_token"]
    }
    # access_token_info의 결과가 계속 -401로 돌아옵니다. 추후 수정할 예정입니다.
    response = requests.get('https://kapi.kakao.com/v1/user/access_token_info', headers=headers)
    result = response.json()
    if "error_code" in result:
     # -401은 유효하지 않은 값 혹은 유효기간이 지난 토큰일 경우 발생하는 에러입니다.
        # api로 token 갱신을 요청합니다.
        param = {
            "grant_type":"refresh_token",
            "client_id" : rest_api_key,
            "refresh_token" : tokens["refresh_token"]
        }
        response = requests.post('https://kauth.kakao.com/oauth/token', data=param)
        new_token = response.json()
        
        # 새로 발급된 token을 다시 저장합니다.
        if "error_code" in new_token:
            print("ERROR :", new_token["error_code"])
        else:
            with open("kakao_token.json", "w") as fp:
                json.dump(new_token, fp)
                print("파일로 새로운 토큰 정보 저장!")
    else:
        print("정상 토큰")

====================코드===============================

반응형
반응형

A. www.developers.kakao.com/

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

 

B. (A) 웹으로 이동하여, 로그인 후 애플리케이션 생성

 "내 애플리케이션" 이동

"애플리케이션 추가하기"

"앱이름" "사업자명" 입력, 사업자 없으면 버디버디 아이디 입력하시면 됩니다. (조크) ... 아무거나 쓰시면 됩니다 !

"앱 키" 중 REST API 키를 통해 연동을 할 예정입니다.

 

 

"카카오 로그인"  "상태 on" 으로 바꾸고,  "Redirect URI"  ->  "https://localhost:3000" 입력 -> 토큰 값을 리다이렉트로 받아와야 합니다.

https://kauth.kakao.com/oauth/authorize?client_id=자신의 REST 키값&redirect_uri=https://example.com/oauth&response_type=code

파란새 부분으로 줄을 쳐 놓은 code= 토큰값 으로 토큰을 json 형태로 저장하여 r,w 인증에 사용합니다.

 

============================================================================================

import requests
import json

url = 'https://kauth.kakao.com/oauth/token'
client_id = '자신의 REST 키값'
redirect_uri = 'https://example.com/oauth'
code = '자신의 CODE 값'

data = {
    'grant_type':'authorization_code',
    'client_id':client_id,
    'redirect_uri':redirect_uri,
    'code': code,
    }

response = requests.post(url, data=data)
tokens = response.json()

#발행된 토큰 저장
with open("token.json","w") as kakao:
    json.dump(tokens, kakao)

 

============================================================================================

import requests
import json

#발행한 토큰 불러오기
with open("token.json","r") as kakao:
    tokens = json.load(kakao)

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

headers={
    "Authorization" : "Bearer " + tokens["access_token"]
}

data = {
       'object_type': 'text',
       'text': '퇴근 완료',
       'link': {
           'web_url': 'https://developers.kakao.com',
           'mobile_web_url': 'https://developers.kakao.com'
       },
       'button_title': '키워드'
   }
   
data = {'template_object': json.dumps(data)}
response = requests.post(url, headers=headers, data=data)
response.status_code

 

============================================================================================

 

 

 

*api 발급 순서 정리

현재 카카오모먼트API 사용하기위해
1.https://kauth.kakao.com/oauth/authorize?client_id= 3 요청해서 인가코드 받고

2.URL → https://kauth.kakao.com/oauth/token 4 파라미터 1.client_id, 2.code, 3.redirect_uri, 4.grantType=“authorization_code”
요청으로 받은 refresh토큰으로

3.URL → https://kauth.kakao.com/oauth/token 4 파라미터 1.client_id, 2.refresh_token 3.grant_type=refresh_token
요청으로 ACCESSTOKEN을 받아서 사용

 

근데...토큰 유효 시간이 너무 짧다..

해결방법은~ 아래 링크!

https://blog.soowim.co.kr/95

 

 

반응형
반응형

element(단일) , elements(복수)설명

By.ID 태그의 id값으로 추출
By.NAME 태그의 name값으로 추출
By.XPATH 태그의 경로로 추출
By.LINK_TEXT 링크 텍스트값으로 추출
By.PARTIAL_LINK_TEXT 링크 텍스트의 자식 텍스트 값을 추출
By.TAG_NAME 태그 이름으로 추출
By.CLASS_NAME 태그의 클래스명으로 추출
By.CSS_SELECTOR css선택자로 추출
반응형

'Python' 카테고리의 다른 글

파이썬 str + int 사용하기!  (0) 2023.07.03
반응형

A. 아래 설치

apt-get install samba-client samba-common

B. 윈도우 접근 가능 상태 DIR 확인

smbclient -L SERVER_IP -U USERNAME


조회 되었다면 윈도우에서는 마운트 준비가 완료 된 상황,

공유한 폴더, 조회 된 폴더 리스트중 포인트를 정하고 리눅스 서버 마운트 포인트로 마운트하자.

 

C. CLI 마운트

mount -t cifs //SERVER_IP/testdir /리눅스/마운트/폴더 -o username=USERNAME,password=PASSWD

df -Th 로 마운트 된 것 확인 ~

 

끝! 이아니고

C. fstab 마운트

/etc/fstab에 등록해서 부팅할때 마운트 되게 하자~

 

//WINDOW_IP/WINDOWDIR /LINUX/DIR username=USERNAME,password=PASSWD,iocharset=utf8,sec=ntlm,vers=1.0 0 0

 

 

D. 철통 보안?

fstab 파일에 유저정보를 감추고 싶으면 아래와 같이 /root/.smbuser 파일을 만들고,  fstab에 명시해준다.

[root@**** ~]# cat /root/.smbuser
username=user
password=password

 

개인적으로는 fstab은 비추, 문제 생겨서 리붓했을때 마운트가 불가한 상황이면 싱글로 떨어진다...

 

 

최대한 문제 발생의 여지를 줄이기 위해, 마운트 스크립트를 박아놓는다.  (문제 있으면 마운트만 안됨, 부팅은 되니까~누난 내여자니까~ (?) )

 

-끝-

반응형

+ Recent posts