2012-05-10 2 views
3

내가 작업하고있는 Android 앱의 경우 콘텐츠를 보내고 다른 사용자에게 콘텐츠를 수신하도록 프로필을 만들어야합니다. 로그인 프로세스의 경우 사용자가 휴대 전화에 연결된 Gmail 계정으로 로그인 할 수 있습니까? Google Play를 사용하기 위해 활성화 된 동일한 계정이 될 것입니다.Gmail 계정을 사용하여 내 앱에 로그인 하시겠습니까?

이렇게하면 전체 로그인 프로세스가 매우 원활해질 것이며, 가능한 최상의 시나리오라고 생각합니다.

감사합니다.

+0

체크 아웃이 게시물에, 그것은 당신이 필요 수 있습니다 : http://stackoverflow.com/questions/3360926/get-main-gmail-account-username-in-android-2-0, 또는 아마도이 하나 : http://stackoverflow.com/questions/2112965/how-to -get-the-android-devices-primary-e-mail-address –

답변

0

예 가능하고 간단합니다. 시작하기 전에 AndroidManifest.xml 하나의 권한을 추가해야합니다.

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

기기와 연결된 계정을 읽을 수 있습니다. 그런 다음 앱에서 다음을 수행합니다.

Account[] accounts = AccountManager.get(context).getAccountsByType("com.google"); 

그러면 사용자의 모든 Google 계정이 반환됩니다.

public static String[] getAccounts(Context context) { 
    Account[] accounts = AccountManager.get(context).getAccountsByType("com.google"); 
    String[] names = new String[accounts.length]; 

    for (int i = 0; i < accounts.length; ++i) names[i] = accounts[i].name; 

    return names; 
} 

이 기능은 장치의 모든 Gmail은 이메일 (구글 계정)의 문자열 배열을 반환합니다 : 귀하의 경우에 어쩌면 당신은 그래서 여기에 당신에게 줄 것이다 빠른 정적 기능입니다 만 이메일을해야합니다.

그러나 더 자세한 정보는 일부 Google 서비스와 "이야기해야"하는 경우 다음을 수행해야합니다. 먼저 매니페스트에 또 하나의 권한을 추가 :이 권한은 앱이 일부 Google 서비스의 앞에 사용자를 식별하기 위해 사용하는 자격 증명을 사용 할 수

<uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission> 

. 자격 증명 (암호)을 제공하지 않습니다.

일부 Google 서비스를 사용하려면 토큰이 필요합니다. 여기 그에 대한 빠른 기능입니다 : 당신이 토큰을 사용하면 단지 HTTP API를 일단

public static String getToken(Activity activity, String serviceName) { 
     try { 
      Bundle result = AccountManager.get(activity).getAuthToken(account, serviceName, null, activity, null, null).getResult(); 

      return result.getString(AccountManager.KEY_AUTHTOKEN); 
     } catch (OperationCanceledException e) { 
      Log.d("Test", "Operation Canceled"); 
     } catch (AuthenticatorException e) { 
      Log.d("Test", "Authenticator Exception"); 
     } catch (IOException e) { 
      Log.d("Test", "Auth IOException"); 
     } 

     return null; 
} 

그들이 가지고는 당신이 재미 :-)이

관련 문제