Google+ API 설정
- Google APIs Console 에 들어가서 Google+ API Project 를 생성한다.
- 생성된 프로젝트로 들어가서, APIs & auth – APIs 설정에 들어가서 Google+ API 와 이용할 API 를 설정한다.
- APIs & auth – Credentials 설정에 들어가 CREATE NEW CLIENT ID 버튼을 클릭한다.
– Installed application 과 Android 를 선택한다.
– package name 은 테스트하려는 어플리케이션의 패키지명을 작성하고, SHA1 항목에는 keystore 의 SHA1 값을 작성한다. 여기서는 debug key 를 이용하였지만, keystore 는 배포시에는 마켓에 올릴 때 사용하는 keystore 를 이용하여야 한다.localhost$ keytool -exportcert -alias androiddebugkey -keystore /Users/chaeyeonghun/.android/debug.keystore -list -v 키 저장소 비밀번호 입력: "android" for default key chain 별칭 이름: androiddebugkey 생성 날짜: 2013. 11. 1 항목 유형: PrivateKeyEntry 인증서 체인 길이: 1 인증서[1]: 소유자: CN=Android Debug, O=Android, C=US 발행자: CN=Android Debug, O=Android, C=US 일련 번호: 48af2567 적합한 시작 날짜: Fri Nov 01 20:30:39 KST 2013, 종료 날짜: Sun Oct 25 20:30:39 KST 2043 인증서 지문: MD5: FB:97:CD:F9:C6:3C:75:F3:03:48:F0:4E:7A:96:56:E8 SHA1: 57:74:40:1D:20:5C:BF:D3:72:CD:FE:EF:B7:A4:D7:47:BC:13:6F:B2 SHA256: 8B:DE:D5:92:22:E1:14:06:E3:54:C2:C4:8E:BD:E0:00:D7:B0:83:0A:59:B1:51:F9:67:18:A9:E6:7F:FF:E8:66 서명 알고리즘 이름: SHA256withRSA 버전: 3 ...
cmd 에서 위와 같은 명령어로 SHA1 값을 알 수 있다. debug key 는 보통 ~/.android/debug.keystore 에 위치해있고 비밀번호 입력은 android 를 입력하면 된다.
Deep linking 는 activate interactive posts 를 이용하려면 활성화 하여야한다. - 이 설정을 마치고 나서도 간혹 오류 (msg : 내부 오류가 발생하였습니다.) 가 발생하는 경우가 있는데, APIs & auth – Consent screen 이 입력되지 않았을 시 발생하기도 한다. 시작하기 전에 이 부분을 꼭 확인하는 것이 좋다.
Eclipse 설정
- File > Import > Android > Existing Android Code Into Workspace 를 통해 라이브러리를 불러온다. Google Play Service 라이브러리는 <android-sdk-folder>/extras/google/google_play_services/libproject 에 위치해있다.
- 작업하려는 프로젝트의 설정에 가서 라이브러리를 추가해준다.
AndroidManifest.xml 편집
- 위의 meta-data 태그를 AndroidManifest.xml 의 application 의 아래로 추가해준다.
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
- Google Play Service API 를 이용하려면 아래와 같은 퍼미션이 요구된다.
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" />
GoogleApiClient
https://github.com/proin/Google-Plus-SDK-Sample-for-Android 에 Google+와 연동한 간단한 어플리케이션 예제를 첨부해놓았다.
- GoogleApiClient 초기화
mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Plus.API) .addScope(Plus.SCOPE_PLUS_LOGIN) .addConnectionCallbacks(connectionCallbacks) .addOnConnectionFailedListener(connectionFailedListener).build();
Google Plus API 이외에도 addApi 함수에서 Drive.API 등을 이용하여 다른 구글 서비스에 접속 할 수 있다.
addScope 함수는 해당 서비스에 대한 권한을 얻는 것으로 생각하면 되고, 각각의 Callbacks 는 접속에 성공했을 때 와 실패했을 때 동작할 함수를 정의한 인터페이스이다. - Callback 인터페이스
private GoogleApiClient.ConnectionCallbacks connectionCallbacks = new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnectionSuspended(int cause) { } @Override public void onConnected(Bundle connectionHint) { }; private GoogleApiClient.OnConnectionFailedListener connectionFailedListener = new GoogleApiClient.OnConnectionFailedListener() { @Override public void onConnectionFailed(ConnectionResult result) { if (mResolvingError) { return; } else if (result.hasResolution()) { try { mResolvingError = true; result.startResolutionForResult(MainActivity.this, REQUEST_RESOLVE_ERROR); } catch (SendIntentException e) { mGoogleApiClient.connect(); } } else { Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_SHORT).show(); mResolvingError = true; } } };
onConnected 함수에서 Google Play Service 접속에 성공했을 시 동작할 코드를 기술할 수 있고, onConnectionFailed 함수에서 접속에 실패 했을 때 동작할 코드를 작성할 수 있다.
- 계정 정보 가져오기
// Get User Info. Plus.AccountApi.getAccountName(mGoogleApiClient); // Get People Info. Plus.PeopleApi.loadVisible(mGoogleApiClient, null).setResultCallback(new ResultCallback<People.LoadPeopleResult>() { @Override public void onResult(LoadPeopleResult peopleData) { if (peopleData.getStatus().getStatusCode() == CommonStatusCodes.SUCCESS) { PersonBuffer personBuffer = peopleData.getPersonBuffer(); try { int count = personBuffer.getCount(); printData.setText(printData.getText() + "\n\npersons"); for (int i = 0; i < count; i++) { printData.setText(printData.getText() + "\n" + personBuffer.get(i).getDisplayName()); } } finally { personBuffer.close(); } } else { Log.e("TAG", "Error requesting visible circles: " + peopleData.getStatus()); } } }); // Share Intent shareIntent = new PlusShare.Builder(MainActivity.this).setType("text/plain").setText("Welcome to the Google+ platform.").setContentUrl(Uri.parse("https://developers.google.com/+/")).getIntent(); startActivityForResult(shareIntent, 0);
GoogleApiClient 를 이용하여 로그인 된 계정의 정보와 서클(친구) 목록에 있는 사람들의 정보를 불러올 수 있고 Intent 를 통해 사용자의 구글+ 에 게시글을 올릴 수 도 있다.
Summary
구글 플레이 서비스 API 를 이용하여 게임, 드라이브, 구글+ 등 다양한 구글의 서비스와 연동한 앱을 만들 수 있지만, 트위터, 페이스북 SDK 처럼 사용자의 게시글 내용, 뉴스피드, 검색 결과와 같은 정보는 불러올 수 없는 듯 하다. 따라서 구글+ 자체를 활용하는 어플리케이션에는 적합하지 않고, 다른 구글 서비스와 연동하여 보조적으로 사용해야 할 것 같다.