]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/gss-lib-2.2/sample/SpreadSheet_Auth/src/com/gss/sample/auth/AndroidAuthenticator.java
Added gss-lib-2.2.
[Dictionary.git] / jars / gss-lib-2.2 / sample / SpreadSheet_Auth / src / com / gss / sample / auth / AndroidAuthenticator.java
1 package com.gss.sample.auth;\r
2 \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
9 \r
10 import com.pras.auth.Authenticator;\r
11 \r
12 public class AndroidAuthenticator implements Authenticator {\r
13 \r
14         private final String TAG = "AndroidAuthenticator";\r
15         Activity activity;\r
16         AccountManager manager;\r
17         private String mService = null;\r
18         private String auth_token = "";\r
19         \r
20         public AndroidAuthenticator(Activity activity){\r
21                 this.activity = activity;\r
22                 manager = AccountManager.get(activity.getApplicationContext());\r
23         }\r
24         \r
25         public String getAuthToken(String service) \r
26         {\r
27                 if(service == null){\r
28                         throw new IllegalAccessError("No Service name defined, Can't create Auth Token...");\r
29                 }\r
30                 \r
31                 if(mService != null && !mService.equals(service)){\r
32                         // Reset previous Token\r
33                         manager.invalidateAuthToken("com.google", auth_token);\r
34                 }\r
35                         \r
36                 Account[] acs = manager.getAccountsByType("com.google");\r
37                 Log.i(TAG, "Num of Matching account: "+ acs.length);\r
38                 \r
39                 for(int i=0; i<acs.length; i++){\r
40                         if(acs[i].type.equals("com.google"))\r
41                         {\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
45                                 \r
46                                 try{\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
50                                         return auth_token;\r
51                                 }catch(Exception ex){\r
52                                         Log.i(TAG, "Error: "+ ex.toString());\r
53                                 }\r
54                         }\r
55                 }\r
56                 Log.i(TAG, "Problem in getting Auth Token...");\r
57                 return null;\r
58         }\r
59 }\r