python/도구

가비아 sms 최종 소스

자코린이 2022. 12. 7. 15:43
from urllib.request import urlopen
import requests
import json
import base64
 
# Encode string data
def stringToBase64(s):
    base64Result = base64.b64encode(s.encode('ascii'))
    return base64Result.decode('ascii')
    
def requestsUrl(url, headers, payload):
    response = requests.request('POST', url, headers = headers, data = payload, allow_redirects=False, timeout=5)
    return response

tokenUrl = 'https://sms.gabia.com/oauth/token'
tokenPayload = 'grant_type=client_credentials'
tokenHeaders = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic 자신의 base64encode값'
}

smsUrl = 'https://sms.gabia.com/api/send/sms'
smsHeaders = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': ''}
smsPayload = 'phone=01000000000&callback=1577----&message=msg&refkey=[[유니크한 자신의 문자열]]'

while True:
	#get access token
    tokenResult = requestsUrl(tokenUrl, tokenHeaders, tokenPayload)
    token = tokenResult.json()
    tokenSum = '자신의 id:' + token['access_token']
    base64Result = stringToBase64(tokenSum)
    
    #send message part
    smsHeaders['Authorization'] = 'Basic ' + base64Result
    smsResult = requestsUrl(smsUrl, smsHeaders, smsPayload)
    #한글출력을 하고 싶으시면 아래코드 이때 띄어쓰기는 % 대신 공백
    #smsResult = requestsUrl(smsUrl, smsHeaders, smsPayload.encode('utf-8'))
    print(smsResult.text)

    time.sleep(1800)

저번 포스트에서 적은 글의 문제점이 acess token이 1시간가량 마다 다시 얻어와야 한다는 문제입니다.

2022.12.07 - [python/도구] - 가비아 sms 서비스 구축

 

가비아 sms 서비스 구축

1. 가비아에 회원가입과 sms서비스를 신청합니다. 회원가입 외에도 개정된 법으로 인해 '통신서비스 이용증명서'가 필요합니다. https://www.gabia.com/ 웹을 넘어 클라우드로. 가비아 그룹웨어부터 멀

jacorinne.tistory.com

 

이 문제를 보완하기 위해 소스를 수정하였습니다.