특정 주소를 입력하면 위/경도를 반환하는 코드가 필요했고, 두 가지 방법을 찾았다.
- Geocode by Awesome Table
바로 스프레드 시트에 address를 입력하면 위경도를 반환해주는 구글 스프레드 시트의 부가기능이 있었고,
2. 카카오 API
두 번째는 카카오 지도 API를 활용하는 방법이었다.
나는 그 중에서 번거롭지만 직접 코딩을 해서 위경도를 반환하는 카카오 지도 API를 활용하기로 했다.
1. 가입 및 설정
해당 링크를 통해 로그인을 하고 앱을 등록한다. (사진은 궂이 등록 안해도 됨)
앱 등록 후 앱 키를 꼭 복사해서 메모장에 붙여넣는다.
가입을 진행했으면, <내 애플리케이션>에 들어가 <설정>에서 <사용자 관리>를 들어간다.
여기서 중요한데, 사용자 관리를 활성화 해준 뒤 로그인 Redirect URL을 설정해주면 된다.
나같은 경우는 jupyter notebook의 기본 주소로 등록했다. (각자 사용환경에 맞게 등록하면 된다)
2. 코드 받기
각자 사용 환경과 앱키에 맞게 주소값을 입력한 후 url을 복사하여 주소창에 넣어준다.
그러면 개인정보 제공 동의에 대한 팝업이 뜨고 동의를 누르면 자신의 Jupyter notebook 환경으로 접속 된다.
3. 코드 내용 확인
해당 jupyter notebook의 주소창을 보면
http://localhost:8888/tree?code=코드값
으로 주소창이 구성되어 있는 것을 볼 수 있다. 여기서 해당 주소 끝부분이 코드값이다. 그럼 이제 토큰을 받으러 가면 된다.
4. 토큰 생성
이렇게 세 가지를 붙여서 주소창에 붙여넣으면,
{"access_token":"ZLl~~~","token_type":"bearer","refresh_token":"r7LX~~~","expires_in":21599,"scope":"age_range birthday account_email gender profile","refresh_token_expires_in":~~~}
이런식으로 성공적으로 뜰 것이다.
이제 access_token을 발급 받았으니 코드를 통해 위경도를 추출해내면 끝!
5. 코드 작성
def getLatLng(addr):
url = 'https://dapi.kakao.com/v2/local/search/address.json?query=' + addr
headers = {"Authorization": "KakaoAK 073a393656181c6073880062d3507191"}
result = json.loads(str(requests.get(url, headers=headers).text))
match_first = result['documents'][0]['address']
return float(match_first['y']), float(match_first['x'])getLatLng('서울 마포구 모래내로1길 20')
6. 토큰 재발급
해당 토큰은 12–24시간 동안 유효하다고 한다. 그렇기에 만료 1달 이내에 토큰 갱신 요청을 하면 어세스 토큰과 리프레시 토큰이 생성 된다고 한다.
https://kauth.kakao.com/oauth/token?grant_type=refresh_token&client_id=REST API 값&refresh_token=4에서 받은 refresh token 값
해당 주소를 입력하면 어세스 토큰이 재 발급 된다.
{"access_token":"~~","token_type":"bearer","expires_in":21599}