1 package com.gss.sample.auth;
\r
3 import android.accounts.Account;
\r
4 import android.accounts.AccountManager;
\r
5 import android.accounts.AccountManagerFuture;
\r
6 import android.app.Activity;
\r
7 import android.os.Bundle;
\r
8 import android.util.Log;
\r
10 import com.pras.auth.Authenticator;
\r
12 public class AndroidAuthenticator implements Authenticator {
\r
14 private final String TAG = "AndroidAuthenticator";
\r
16 AccountManager manager;
\r
17 private String mService = null;
\r
18 private String auth_token = "";
\r
20 public AndroidAuthenticator(Activity activity){
\r
21 this.activity = activity;
\r
22 manager = AccountManager.get(activity.getApplicationContext());
\r
25 public String getAuthToken(String service)
\r
27 if(service == null){
\r
28 throw new IllegalAccessError("No Service name defined, Can't create Auth Token...");
\r
31 if(mService != null && !mService.equals(service)){
\r
32 // Reset previous Token
\r
33 manager.invalidateAuthToken("com.google", auth_token);
\r
36 Account[] acs = manager.getAccountsByType("com.google");
\r
37 Log.i(TAG, "Num of Matching account: "+ acs.length);
\r
39 for(int i=0; i<acs.length; i++){
\r
40 if(acs[i].type.equals("com.google"))
\r
42 // The first Gmail Account will be selected
\r
43 Log.i(TAG, "Selected Google Account "+ acs[i].name);
\r
44 AccountManagerFuture result = (AccountManagerFuture)(manager.getAuthToken(acs[i], service, null, activity, null, null));
\r
47 Bundle b = (Bundle)result.getResult();
\r
48 auth_token = b.getString(AccountManager.KEY_AUTHTOKEN);
\r
49 Log.i(TAG, "Auth_Token: "+ auth_token);
\r
51 }catch(Exception ex){
\r
52 Log.i(TAG, "Error: "+ ex.toString());
\r
56 Log.i(TAG, "Problem in getting Auth Token...");
\r