Bonsoir, j'essaye de changer l'authentification de mon application en utilisant oauth qui vient avec l'AccountManager de android pour ne pas avoir à gérer l'authentification de mes utilisateurs. Arriver à lister les comptes et en choisir un n'est pas un problème mais je dois ensuite obtenir un jeton "auth token" et je ne sais pas ce que je suis censé faire avec? Je dois surement l'envpoyer quelque part et le stocké dans l'app pour que les utilisateurs n'aient pas à se logger à chaque fois mais je ne trouve pas le fonctionnement de ce systeme après avoir consulter de nombreux tutoriels...

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
package test.auth.activity;
 
 
public class TestAuthActivity extends Activity {
 
	String AUTH_TOKEN_TYPE = "Manage your tasks";//"oauth2:https://www.googleapis.com/auth/tasks"; / "oauth2:https://spreadsheets.google.com/feeds/";
	Account account;
	static final int DIALOG_ACCOUNTS = 0;
    AccountManager accountManager;
    Account[] accounts;
    //String token;
 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
 
		Bundle options = new Bundle();
		accountManager = AccountManager.get(this);
		accounts = accountManager.getAccountsByType("com.google");
 
	       setContentView(R.layout.main);			// j'affiche le XML de la page
 
	       if(accounts.length > 1){
	    	   showDialog(DIALOG_ACCOUNTS);	
 
	       }else{
	    	   account = accounts[0];
	    	   System.out.println(account.name);
	       }
 
	       accountManager.getAuthToken(account, AUTH_TOKEN_TYPE, options, this, new OnTokenAcquired(), null);
	}
 
	@Override
	protected Dialog onCreateDialog(int id) {
 
		switch (id) {
	    case DIALOG_ACCOUNTS:
 
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
	      builder.setTitle("Select a Google account");
	      final int size = accounts.length;
	      String[] names = new String[size];
	      for (int i = 0; i < size; i++) {
	        names[i] = accounts[i].name; // ID of the account
	      }
	      builder.setItems(names, new DialogInterface.OnClickListener() {
	        public void onClick(DialogInterface dialog, int which) {
 
	        	account = accounts[which];
		    	   System.out.println(account.name);
	        }
	      });
	      return builder.create();
 
		}
 
		return null;
	}
 
	private class OnTokenAcquired implements AccountManagerCallback<Bundle> {
	    @Override
	    public void run(AccountManagerFuture<Bundle> result) {
	        // Get the result of the operation from the AccountManagerFuture.
	        Bundle bundle;
			try {
				bundle = result.getResult();
 
		        // The token is a named value in the bundle. The name of the value
		        // is stored in the constant AccountManager.KEY_AUTHTOKEN.
		        String token = bundle.getString(AccountManager.KEY_AUTHTOKEN);
 
		        Intent launch = (Intent) bundle.get(AccountManager.KEY_INTENT);
		        if (launch != null) {
		            startActivityForResult(launch, 0);
		            return;
		        }
 
			} 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();
			}
 
 
	    }
	}
 
}