3

私が取り組んでいる Android アプリでは、他のユーザーとコンテンツを送受信するためのプロファイルを作成する必要があります。ログイン プロセスについて、ユーザーは電話に関連付けられた Gmail アカウントでログインできますか? これは、Google Play を使用するためにアクティブになっているアカウントと同じです。

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

どうもありがとう!

4

1 に答える 1

0

はい、可能です。静かでシンプルです。開始する前に、AndroidManifest.xml に 1 つのアクセス許可を追加する必要があります

<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 サービスと「対話」する必要がある場合は、次の手順を実行する必要があります。まず、マニフェストにもう 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;
}

トークンを取得したら、彼らが持っている HTTP API だけを取得し、楽しんでください:-)

于 2012-05-25T11:10:06.423 に答える