toodledo api 인증코드 받기

2018. 5. 18. 06:00

이전 포스팅에서 시간 관리를 위해 toodledo를 스티븐 코비의 방식을 이용해서 분류하는 방법에 대해서 적용해 보았다.
(참조:toodledo어플을 프랭클린 플래너 같이 이용하기)

중요성과 긴급성으로 분류하는 체계는 각각의 할일을 자신의 비전에 맞추어 얼마나 잘 분류하느냐가 핵심인 듯 하다. 그리고 모든 일이 다 중요하거나 긴급하다면 분류하는 의미가 없으므로 하루를 기준으로 처리 가능한 수준으로 중요한 일을 정리해야 한다. 오늘은 toodledo를 이용하여 중요한 일과 긴급한 일의 비율을 산정하는 작업을 해보려고 한다. 미리 말을 하면 이 기능은 유료로 제공되고 있다. 그래서 유료 구매 없이 toodle do api를 이용해서 자동화 하는 작업까지 해 보려고 한다. 

제목

추천포스트

분류된 체계를 확인하는 가장 좋은 방법은 그래프가 아닐까 싶다. toodledo에서는 할일들의 현황을 그래프로 보여주는 기능이 있다.

그래프

(toodledo에서 제공하는 그래프 기능)


파이 차트부터 라인 그래프, 버블 그래프 등 다양한 형태의 그래프를 그릴 수 있는 기능을 제공해 주고 있다.

하지만 해당 기능을 이용하려면 업그레이드를 해야 한다. silver로 업그레이드 하면 Graphs 기능이 가능하다. 1년에 2만원 꼴로 큰 금액은 아니지만, 우리 세대는 돈을 지불하고 프로그램을 이용하는 것에 인색하다. 좀 더 찾아본 결과 toodledo에서 api를 지원하는 것을 알게 되었다. 

api설명

(toodledo api 설명, http://api.toodledo.com/3/index.php)


API를 통해서 toodledo에서 제공하는 기능에 대부분 접근이 가능했다. Tasks, Notes, Outlines, Lists에 접근이 가능하다. 잘 사용하면 굉장히 유용하게 쓸 수 있을 거라는 생각이 든다. 


우선 Tasks 항목에 들어가 보니 Retrieving Tasks라고 하여 할일들을 가져오는 기능이 있다. 원하는 기능이 있으니 이 기능을 잘 사용하면 되겠다. 참고로 Retrieve는 '되찾아오다, 검색하다'라는 뜻이다. 검색하여 원하는 tasks를 가져올 수 있기 때문에, Retrieving Tasks라고 한 듯 하다.

tasks_api

(Tasks API,  http://api.toodledo.com/3/tasks/index.php)


늘 그렇듯 toodledo api를 이용하기 위해서는 인증을 받아야 한다. API문서를 대충 훑어본 결과 기존에 다른 API에서 인증 받는 방식과 동일하게 가능함을 알 수 있었다. 


우선은 API를 사용하기 위해서 나의 App을 등록해야 한다. App은 아니지만 등록페이지로 가자.

API사용을위한등록페이지

(API사용을 위한 등록 페이지, http://api.toodledo.com/3/account/doc_register.php)


특이하게 원하는 클라이언트ID를 등록할 수 있다. 등록하고 나면 원하는 ID로 등록이 됐는지와 Secret 코드를 받을 수 있다.


등록하고 나면 아래의 주소를 아래의 주소에 접속하라고 한다.


https://api.toodledo.com/3/account/authorize.php?response_type=code&client_id=[부여받은 client_id를 넣는다]&state=YourState&scope=basic%20tasks


client_id에는 내 클라이언트 ID를 넣으면 된다 .특이한 점은 state에 random string을 넣으라고 한다. cross-site request forgery를 막기 위해서라고 한다. 


toodledostat이 toodledo Account에 접속을 하고 싶냐고 나온다. API를 사용하겠냐는 뜻과 동일하다고 봐도 무방할 듯 하다. "Sign in"을 누르면 redirect url로 지정한 곳에 code라고 해서 인증코드가 포함된 주소가 회신된 것을 알 수 있다.

특이하게도 code를 받는 것으로 끝나지 않았다. 받은 코드를 가지고 다시 access_token을 받아야 했다.


위 주소를 매번 위와 같이 작업하기는 귀찮으니 간단한게 code를 만들어 보았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# coding=utf-8
 
#
 
# toodledo 인증 받기
 
 
 
 
 
from urllib.request import urlopen
 
import pandas as pd
 
from bs4 import BeautifulSoup
 
import webbrowser
 
import random
 
 
 
import request
 
 
 
def auth():
 
    client_id = "부여받은 client_id를 입력"
    secret = "부여받은 secret"
 
    scope = "basic%20tasks"
 
    state = int(random.random() * 10000)
 
    url = "https://api.toodledo.com/3/account/authorize.php?response_type=code&client_id=" + client_id + "&state=" + str(state) + "&scope="+scope
 
    webbrowser.open(url)
 
 
    return_url = input("redirect url의 주소를 입력하세요.")
    code = return_url.split("=")[1].split("&")[0]
 
 
    request_url="https://[client_id]:[secret]@api.toodledo.com/3/account/token.php"
    params = {"grant_type":"authorization_code", "code":code}
    response = requests.post(request_url,params)
 
    # print(response.text)
 
    result=response.json()
    access_token=result["access_token"]
 
    return access_token
 
 
 
 
 
if __name__ == "__main__"
    # 인증token값을 acess_token에 저장한다.
    access_token = auth()
 
 
 
 
cs


인증을 받고 나니 글이 길어졌다. 이제 부여받은 access_token을 가지고 Tasks를 불러오고 편집하면 되겠다. 실제 Tasks를 추출해오는 작업은 다음 포스팅에 이어서 작성하도록 하겠다. 


오픈API를 사용하면 다양한 재미있는 일들을 해 볼 수 있다. 파이썬을 활용한 오픈API 사용이 궁금하다면 아래 글을 참조해보자.

(참조: 오픈API를 활용한 사례는 어떤 것들이 있을까?)

댓글()