そのアカウントでGoogle App Engineの認証を行う簡単なサンプルです。
AndroidManifest.xmlは、次のパーミッションを指定します。
- android.permission.GET_ACCOUNTS
- android.permission.MANAGE_ACCOUNTS
- android.permission.USE_CREDENTIALS
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(
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 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();
}
}
}
リストで選んだ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 件のコメント:
コメントを投稿