티스토리 뷰



참고

구글 캘린더 API 문서 - https://developers.google.com/google-apps/calendar/


어플리케이션으로 달력을 만들 때 인터넷 서버와 동기화한다면 더 큰 확장성을 가질 것입니다.

그래서 달력을 동기화할 수 있는 서버 중에서 가장 기본적이고 많이 사용하는 구글 캘린더를 이용하여 어떻게 서버와 연결하고 사용할 것인지 연구해 볼 겁니다.


이 글은 윈도우10 OS에서 안드로이드 스튜디오와 자바가 깔린 컴퓨터에서 진행했습니다.


API 문서에 Quickstart를 토대로 작성했습니다.

https://developers.google.com/google-apps/calendar/quickstart/android




Step 1: SHA1 인증키


자바가 정상적으로 설치되어 있다면 명령 프롬프트에서 'keytool'이 실행되어야 합니다.

만약 자바를 설치했지만 'keytool'이 실행되지 않는다면 '환경변수' 설정을 다시 해주어야 합니다.

제 경우에는 환경변수를 'JAVA_HOME'만 설정해서 'keytool'이 실행되지 않아 다시 '환경변수'를 설정해줘야 했습니다.



'시스템 정보'에 왼편의 '고급 시스템 설정'을 클릭하면 뜨는 창에서 '환경변수'버튼을 눌러 '환경변수'창을 띄웁니다.





'환경변수' 창에서 아래에 빨간 부분인 'JAVA_HOME', 'Path'를 확인해 주어야 하는데요.





'JAVA_HOME'에는 자바가 설치되어 있는 경로가 써져 있어야 합니다. 만약 'JAVA_HOME'이 없다면 새로 만들어서 추가해줍니다.

'Path'에는 jdk와 jre에 있는 폴더의 bin폴더 경로까지 포함시켜 넣어주어야 합니다.


예) 

JAVA_HOME - C:\Program Files\Java\jdk1.8.0_92\


Path -     C:\Program Files\Java\jdk1.8.0_92\bin

C:\Program Files\Java\jre1.8.0_92\bin


'환경변수'를 설정할 때 잘못해서 다른 것들을 수정한다면 시스템에 치명적인 오류가 있을 수 있으니 조심조심해서 설정해야 합니다.

'환경변수'설정이 끝났다면 이제 명령 프롬프트를 열어 'keytool'이 잘 작동되는지 확인해봅시다.



명령 프롬프트에서 'keytool'를 실행했을 때 위와 같이 실행된다면 정상적으로 작동하는 것입니다.

이제 안드로이드 스튜디오가 설치되어 있다는 가정하에 SHA1 인증키를 받을 겁니다.

(.android폴더는 안드로이드 스튜디오를 설치해야 생성되어 있습니다.)


keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v

위와 같은 명령을 입력을 해서 인증키를 받아와야 하는데요.
빨간색으로 되어있는 부분을 자신의 컴퓨터에 해당하는 경로로 바꿔줘야 합니다.

제 컴퓨터의 경우 C:\Users\over\.android\debug.keystore 였네요.



Enter keystore password:

가 나오면 비밀번호로 'android'치고 엔터를 누르면 아래로 인증키가 나옵니다.

이 중에서 SHA1 부분을 복사하면 됩니다.



Step 2: 안드로이드 프로젝트 만들기


안드로이드 스튜디오를 실행해서 새로운 프로젝트를 만들어 줍니다.


'Package name'은 구글 캘린더 API 활성화 할 때 사용할 것이니 알아두어야 합니다.

만약 지나쳤을 경우 'build.gradle'이나 'AndroidManifest.xml'에 있는 package 부분의 이름을 복사해주면 됩니다.



Step 3: 구글 캘린더 API 활성화


구글에 로그인을 한 후

https://console.developers.google.com/flows/enableapi?apiid=calendar

위 링크로 들어가서 개발자 콘솔에 Google Calendar API를 켜줘야 합니다.


처음 API를 이용한다면 위와 같은 화면이 나옵니다.

간단히 설명하면 개발자 콘솔에 가입하는데 정보 메일을 받을 것인지 약관에 동의하는지 물어보는 것입니다.

저는 메일은 받기 싫어서 메일은 no에 약관은 yes에 체크하고 넘어갔습니다.



그럼 다음 화면으로 API 사용을 위한 몇가지 설정을 해줘야 합니다.

어떤 API를 사용할 것인지 어떤 플랫폼에서 사용할 것인지 무슨 데이터를 쓸 것인지 물어보는데요.

저는 Google Calendar API와 Android 플랫폼과 User data에 선택했습니다.


다음은 윗단계에서 얻은 SHA1 인증키를 넣어야 합니다.

Name에 이름을 적고 밑부분에 'keytool'에서 얻은 SHA1 인증키를 붙여넣어 줍시다.

그리고 Package name에 안드로이드 스튜디오에서 만든 프로젝트의 Package name을 넣어주어야 합니다.


인증이 잘되었다면 기본 정보를 넣어주어야 합니다.

Email과 이름을 넣고 Continue를 누르면 프로젝트 인증이 끝났습니다.


그런 뒤 다시

https://console.developers.google.com/flows/enableapi?apiid=calendar 로 들어가 API를 활성화 시켜주면

구글 캘린더 API가 활성화가 되었습니다.



Step 4: 프로젝트


https://developers.google.com/google-apps/calendar/quickstart/android#step_4_prepare_the_project


이제 프로젝트의 소스를 수정해주어야 하는데요.

위의 링크로 들어가서 하나하나씩 직접 보며 수정하는 것을 권장합니다.



첫번째.

'build.gradle' 에서는 'dependencies' 부분에서

compile 'com.google.android.gms:play-services-identity:8.4.0'
compile 'pub.devrel:easypermissions:0.1.5'
compile('com.google.api-client:google-api-client-android:1.22.0') {
exclude group: 'org.apache.httpcomponents'
}
compile('com.google.apis:google-api-services-calendar:v3-rev194-1.22.0') {
exclude group: 'org.apache.httpcomponents'
}

이 부분을 추가하면 됩니다. 추가를 했다면 그래들을 동기화시켜야 합니다. 경고창이 뜬다면 바로 Sync를 하면 되지만 안뜬다면

메뉴에 Tools > Android > Sync Project with Gradle Files 를 눌러 동기화 시켜줍니다.

시간이 약간 오래 걸리수도 있습니다.



두번째.

'AndroidManifest.xml'을 수정해봅시다.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

유저 퍼미션으로 세가지를 넣어주고

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>

application 안에 meta-data를 추가해주면 됩니다.



세번째.

'MainActivity.java'를 수정해주어야 하는데 이 부분에 캘린더 API의 인증 요청과 데이터 불러오기등등 쓰여져 있습니다.

하지만 지금은 샘플이 작동되는지 확인만 할 것이기 때문에 복사 붙여넣기를 해줍니다.

복사 붙여넣기를 할 때 첫 줄에 'package' 부분은 자신의 package name을 넣어주어야 합니다.


이렇게 모든 수정이 끝났다면 프로젝트를 실행해서 빌드는 잘되는지 실행은 잘되는지 결과는 어떻게 나오는지 확인해주면 됩니다.



Step 5: 결과 확인



위와 같이 나오면 이제 정상적으로 샘플이 실행된 것입니다!


간단히 어플리케이션을 설명해보면

버튼을 누르고 계정을 선택해서 선택된 계정의 캘린더에서 현재 시간부터 10가지 스케쥴을 불러와 보여주는 샘플입니다.


고생하셨습니다!


댓글
«   2024/04   »
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
Total
Today
Yesterday