そのアカウントでGoogle App Engineの認証を行う簡単なサンプルです。
AndroidManifest.xmlは、次のパーミッションを指定します。
- android.permission.GET_ACCOUNTS
- android.permission.MANAGE_ACCOUNTS
- android.permission.USE_CREDENTIALS
- <!--xml version="1.0" encoding="utf-8"?-->
- <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.granoeste.creador.AuthenticatorTest" android:versioncode="1" android:versionname="1.0">
- <uses-sdk android:minsdkversion="7">
- <uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
- <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission>
- <uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:label="@string/app_name" android:name="AccountList">
- <intent-filter>
- <action android:name="android.intent.action.MAIN">
- <category android:name="android.intent.category.LAUNCHER">
- </category></action></intent-filter>
- </activity>
- </application>
- </uses-sdk></manifest>
Activity
AccountManagerから、AccountsByTypeに"com.google"を指定して、Googleアカウントの一覧を取得します。
それをリスト表示してます。
※リストは簡易的に標準のレイアウトを使用してます。
- public class AccountList extends ListActivity {
- protected AccountManager accountManager;
- protected Intent intent;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- accountManager = AccountManager.get(getApplicationContext());
- Account[] accounts = accountManager.getAccountsByType("com.google");
- this.setListAdapter(new ArrayAdapter<account>(
- this, android.R.layout.simple_list_item_1, accounts));
- }
- @Override
- protected void onListItemClick(ListView l, View v, int position, long id) {
- Account account = (Account)getListView().getItemAtPosition(position);
- AccountManagerFuture<bundle> accountManagerFuture =
- accountManager.getAuthToken(account, "ah", null, this, null, null);
- Bundle authTokenBundle;
- try {
- authTokenBundle = accountManagerFuture.getResult();
- String authToken = authTokenBundle.get(
- AccountManager.KEY_AUTHTOKEN).toString();
- Log.i(TAG,"authToken:"+authToken);
- } catch (OperationCanceledException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (AuthenticatorException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- </bundle></account>
リストで選んだAccountでGoogle App Engineの認証を行ってます。
AccountManager#getAuthToken() の 第2引数に AuthTokenTypeを指定します。
"ah"がGoogle App EngineのAuthTokenTypeとなってます。
AuthTokenTypeについては、次のサイトが参考になると思います。
Account Managerについて - adsaria mood
Google Data APIs Frequently Asked Questions - Google Base Data API - Google Code
認証画面が表示されます。
ユーザがAllowを選択するとauthTokenを取得することができます。
0 件のコメント:
コメントを投稿