Bonjour à tous,

Je viens de me lancer sur le développement d'app android. Pour ce faire, j'ai fait une api rest sur symfony sécurisé avec Oauth2, et je souhaite faire communiquer mon app avec mon api. ( quitte a faire une première application, autant qu'elle soit fonctionnelle et concrète )

Pour cela, j'ai créer une nouveau projet sur Android Studio. Sur ma premiere activity ( AccueilActivity ) j'ai placer un bouton avec un intent qui m'ouvre la page de connexion. ( LoginActivity )

Pour gérer facilement Oauth2 en java ( je débute le java tout comme android ), j'utilise https://github.com/danielsz/android-oauth2-client qui est simple a mettre en place.

Mon problème est que j'arrive a récuperer les informations rentrées dans le formulaire, j'arrive a récupérer un Token ( je vois que la commande "Token token = client.getAccessToken();" fonctionne car j'ai mon token, refresh_token qui apparaissent dans les logs une fois l'app testé sur l'AVD )

Mais une fois tout ceci fait, je ne sais pas comment:

1- Transmettre, ou récupérer ma variable Token ( qui contient mon token, mon refresh token, ... ) entre les différentes activity
2- Comment conserver mon token et surtout pouvoir le rafraîchir quand l'utilisateur lance l'application. ( après un arrêt de l'application ou l'utilisateur était déjà connecté )
2- Si la connexion échoue, comment récuperer le code d'erreur allant avec ?

ci dessous mon LoginActivity:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
 
package com.local.testoauth;
 
 
import android.content.Intent;
import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
 
 
 
/**
 * A login screen that offers login via email/password.
 */
public class LoginActivity extends AppCompatActivity  {
 
    /**
     * Id to identity READ_CONTACTS permission request.
     */
    private static final int REQUEST_READ_CONTACTS = 0;
 
 
    /**
     * Keep track of the login task to ensure we can cancel it if requested.
     */
 
    // UI references.
    private EditText mEmailView;
    private EditText mPasswordView;
    private View mProgressView;
    private View mLoginFormView;
    TextView result = null;
    private UserLoginTask mAuthTask = null;
    public static Token LogToken;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
 
        // Set up the login form.
        mEmailView = (EditText) findViewById(R.id.email);
 
        mPasswordView = (EditText) findViewById(R.id.password);
 
        Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);
       mEmailSignInButton.setOnClickListener(signListener);
 
        mLoginFormView = findViewById(R.id.login_form);
        mProgressView = findViewById(R.id.login_progress);
        result = (TextView)findViewById(R.id.result);
    }
 
    // Uniquement pour le bouton "envoyer"
    private OnClickListener signListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            String mailapi = mEmailView.getText().toString();
            // On récupère le poids
            String passapi = mPasswordView.getText().toString();
            mAuthTask = new UserLoginTask(mailapi, passapi);
            mAuthTask.execute((Void) null);
 
        }
    };
 
    public class UserLoginTask extends AsyncTask<Void, Void, Boolean> {
 
        private final String mEmail;
        private final String mPassword;
 
        UserLoginTask(String email, String password) {
            mEmail = email;
            mPassword = password;
            result.setText(LogToken.getAccessToken());
        }
 
        @Override
        protected Boolean doInBackground(Void... params) {
            // TODO: attempt authentication against a network service.
 
            try {
                // Simulate network access.
                OAuth2Client client = new OAuth2Client(mEmail, mPassword,
                        "1_2l8ngmnj5p44csw8884osoc8w8ok48wgs4o0wkgs8400g404wk",
                        "41tb1hpb5jc40gwkos4gsog4sw8sg4ks00occw884ss48w84wg",
                        "http://local.com/app_dev.php");
                Token token = client.getAccessToken();
                LoginActivity.LogToken = token;
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                return false;
            }
 
 
 
            // TODO: register the new account here.
            return true;
        }
 
        @Override
        protected void onPostExecute(final Boolean success) {
            mAuthTask = null;
 
            if (success) {
                //finish();
            } else {
                mPasswordView.setError(getString(R.string.error_incorrect_password));
                mPasswordView.requestFocus();
            }
        }
 
        @Override
        protected void onCancelled() {
            mAuthTask = null;
        }
    }
 
 
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == android.R.id.home) {
            // This ID represents the Home or Up button. In the case of this
            // activity, the Up button is shown. Use NavUtils to allow users
            // to navigate up one level in the application structure. For
            // more details, see the Navigation pattern on Android Design:
            //
            // http://developer.android.com/design/patterns/navigation.html#up-vs-back
            //
            NavUtils.navigateUpTo(this, new Intent(this, accueilActivity.class));
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
je sais que mon code à des problèmes, je ne fait pas encore la vérifications du champs email ni du champs password, ni la vérification de la connexion internet du mobile, mais ma priorité aujourd'hui est de comprendre comment mettre en place mon système de login.

J’espère avoir été clair dans mes explications.

Bonne journée a tous. Et grand merci à ceux qui me répondront