사용자가 앱에 안전하게 로그인하도록 하고 더 강력한 참여형 사용 환경을 만듭니다. 또한 Google+ 로그인을 사용하면 로그인한 사용자가 대화형 소식을 만들어 자신의 친구에게 앱을 사용하도록 초대하도록 함으로써 앱에 대한 참여도를 높일 수 있습니다. 사용자를 Google과 연결함으로써, 사용자에게 이미 앱을 사용하고 있는 친구를 보여주는 신뢰할 만한 소셜 추천을 통해 Google Play에서의 앱 인지도를 빠른 시간 내에 제고할 수 있습니다.
Google+ 로그인 버튼은 사용자를 인증하고 OAuth 2.0 플로를 관리하여 Google API와의 통합을 간소화합니다. 앱이 대화형 소식을 만들고 활동을 관리하며 프로필 및 사용자 정보를 가져오려면 로그인이 필요합니다.
사용자는 언제든지 애플리케이션에 대한 액세스를 취소할 수 있습니다.
시작하기 전에
Google API 콘솔 프로젝트를 만들고 PlusClient 개체를 초기화해야 합니다.
애플리케이션의 레이아웃에 SignInButton
을 추가합니다.
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Activity.onCreate 핸들러에서 요청된 표시 활동으로 mPlusClient
를 초기화합니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPlusClient = new PlusClient.Builder(this, this, this)
.setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity")
.build();
}
Android 활동에서 버튼의 OnClickListener
를 등록하여 해당 버튼을 클릭할 때 사용자를 로그인 처리합니다.
findViewById(R.id.sign_in_button).setOnClickListener(this);
사용자가 로그인 버튼을 클릭한 후에는 mConnectionResult
에서 발생하는 연결 오류를 해결하기 시작해야 합니다. 발생 가능한 연결 오류에는 사용자에게 계정을 선택하라는 메시지 표시 및 앱에 대한 액세스 권한 부여가 있습니다.
@Override
public void onClick(View view) {
if (view.getId() == R.id.sign_in_button && !mPlusClient.isConnected()) {
if (mConnectionResult == null) {
mConnectionProgressDialog.show();
} else {
try {
mConnectionResult.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
} catch (SendIntentException e) {
// 다시 연결을 시도합니다.
mConnectionResult = null;
mPlusClient.connect();
}
}
}
}
사용자가 성공적으로 로그인한 경우 onConnected
핸들러가 호출됩니다. 이 때 사용자의 계정 이름을 가져오거나 인증된 요청을 수행할 수 있습니다.
@Override
public void onConnected(Bundle connectionHint) {
mConnectionProgressDialog.dismiss();
Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show();
}
사용자 로그아웃 처리
앱에 로그아웃 버튼을 추가할 수 있습니다. 앱에 로그아웃 버튼으로 사용할 버튼을 만듭니다. 버튼에 onClickListener
를 첨부하고 PlusClient
를 연결 해제할 onClick
메소드를 설정합니다.
@Override
public void onClick(View view) {
if (view.getId() == R.id.sign_out_button) {
if (mPlusClient.isConnected()) {
mPlusClient.clearDefaultAccount();
mPlusClient.disconnect();
mPlusClient.connect();
}
return true;
}
}
이 코드는 앱에 연결된 모든 계정을 삭제합니다. 다시 로그인하려면 사용자는 자신의 계정을 다시 선택해야 합니다.
액세스 토큰 취소 및 앱 연결 해제
Google+ 개발자 정책의 약관을 준수하려면 Google 계정으로 로그인한 사용자에게 앱과의 연결을 해제할 수 있는 기능을 제공해야 합니다. 사용자가 자신의 계정을 삭제하는 경우 앱이 Google API에서 가져온 정보를 삭제해야 합니다.
다음 코드는 PlusClient.revokeAccessAndDisconnect
메소드 호출 및 onAccessRevoked
이벤트에 대한 응답의 간단한 예를 보여줍니다.
// 연결을 해제하기 전에 clearDefaultAccount()를 실행합니다.
mPlusClient.clearDefaultAccount();
mPlusClient.revokeAccessAndDisconnect(new OnAccessRevokedListener() {
@Override
public void onAccessRevoked(ConnectionResult status) {
// 이제 mPlusClient가 연결 해제되었고 액세스가 취소되었습니다.
// 앱 로직을 실행하여 개발자 정책을 준수합니다.
}
});
onAccessRevoked
콜백에서 이벤트에 응답하고 앱 또는 백엔드 코드에서 모든 적합한 로직을 실행할 수 있습니다. 자세한 내용은 개발자 정책에서 삭제 규칙을 참조하세요.
앱의 디자인과 어울리도록 맞춤 로그인 버튼을 디자인할 수 있습니다. com.google.android.gms.common.SignInButton
클래스는 색상 테마 및 버튼의 크기를 변경할 수 있는 기능을 제공합니다. 추가 맞춤설정이 필요한 경우, 맞춤 버튼을 정의할 수 있습니다.
브랜드 가이드라인을 검토하고 버튼에 사용할 아이콘 및 이미지를 다운로드합니다.
애플리케이션 레이아웃에 버튼을 추가합니다.
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="@string/common_signin_button_text_long" />
다음 예는 SDK에서 현지화된 텍스트를 로드합니다. 또한 활동의 onCreate
메소드 내에서getString(com.google.android.gms.R.string.common_signin_button_text_long)
을 사용하여 버튼 텍스트의 라벨을 가져올 수 있습니다. 로그인 버튼을 어떻게 구현하든 브랜드 가이드라인을 준수해야 합니다.
현지화
SDK는 com.google.android.gms.common.SignInButton
버튼에 사용할 현지화된 문자열을 제공하며 이러한 문자열은 앱 사용자에게 자동으로 제공됩니다. 전체 언어 목록을 보려는 경우, SDK에서 다음 디렉토리를 살펴볼 수 있습니다. <android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib/res/
해당 위치를 보면 values-<langcode>
라는 이름의 디렉토리가 있습니다.
[출처]
https://developers.google.com/+/mobile/android/sign-in?hl=ko