2012-05-10 14 views
3

私がやっているアンドロイドアプリでは、他のユーザーにコンテンツを送信して受け取るためにプロファイルを作成する必要があります。ログインプロセスでは、電話に関連付けられたGmailアカウントでログインすることは可能ですか? Google Playを使用するのに有効な同じアカウントになります。Gmailアカウントを使用してアプリケーションにログインしますか?

これにより、ログインプロセス全体が非常にスムーズになり、可能な限り最良のシナリオになると思います。

多くの感謝!

+0

:-)すると、この記事をチェックしてください楽しんでいるトークンあなただけのHTTP APIを持っていたら、それは何が必要かもしれません。 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

はい、簡単で静かです。あなたが追加する必要が開始する前に、あなたに1つのアクセス許可が

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

をAndroidManifest.xmlにそれはあなたがデバイスに関連付けられたアカウントを読み取ることができます。次に、アプリ内で次の操作を行います。

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サービスと詳細を知りたい場合は、次のようにする必要があります。まずマニフェストに1つのより多くの権限を追加します

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

この許可は、あなたのアプリはいくつかのGoogleサービスの前に利用者を識別するために使用する資格情報を使用できるようになります。それはあなたに証明書(パスワード)を与えるものではありません。

Googleサービスを利用するには、トークンが必要です。ここでは、そのための迅速な機能です:

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; 
} 

あなたは彼らが持っているとあなたが

関連する問題