사용자가 앱에 안전하게 로그인하도록 하고 더 강력한 참여형 사용 환경을 만듭니다. 또한 Google+ 로그인을 사용하면 로그인한 사용자가 대화형 소식을 만들어 자신의 친구에게 앱을 사용하도록 초대하도록 함으로써 앱에 대한 참여도를 높일 수 있습니다. 사용자를 Google과 연결함으로써, 사용자에게 이미 앱을 사용하고 있는 친구를 보여주는 신뢰할 만한 소셜 추천을 통해 Google Play에서의 앱 인지도를 빠른 시간 내에 제고할 수 있습니다.

Google+ 로그인 버튼은 사용자를 인증하고 OAuth 2.0 플로를 관리하여 Google API와의 통합을 간소화합니다. 앱이 대화형 소식을 만들고 활동을 관리하며 프로필 및 사용자 정보를 가져오려면 로그인이 필요합니다.

사용자는 언제든지 애플리케이션에 대한 액세스를 취소할 수 있습니다.

시작하기 전에

Google API 콘솔 프로젝트를 만들고 PlusClient 개체를 초기화해야 합니다.

앱에 Google+ 로그인 버튼 추가

  1. 애플리케이션의 레이아웃에 SignInButton을 추가합니다.

    <com.google.android.gms.common.SignInButton
       
    android:id="@+id/sign_in_button"
       
    android:layout_width="wrap_content"
       
    android:layout_height="wrap_content" />
  2. 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();
    }
  3. Android 활동에서 버튼의 OnClickListener를 등록하여 해당 버튼을 클릭할 때 사용자를 로그인 처리합니다.

    findViewById(R.id.sign_in_button).setOnClickListener(this);
  4. 사용자가 로그인 버튼을 클릭한 후에는 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();
               
    }
           
    }
       
    }
    }
  5. 사용자가 성공적으로 로그인한 경우 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 클래스는 색상 테마 및 버튼의 크기를 변경할 수 있는 기능을 제공합니다. 추가 맞춤설정이 필요한 경우, 맞춤 버튼을 정의할 수 있습니다.

  1. 브랜드 가이드라인을 검토하고 버튼에 사용할 아이콘 및 이미지를 다운로드합니다.

  2. 애플리케이션 레이아웃에 버튼을 추가합니다.

    <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

 


Posted by 모과이IT
,