@@ -176,12 +176,13 @@ void MicroGear::resetToken() {
176176
177177
178178void MicroGear::getToken (char *gkey, char *galias, char * token, char * tokensecret, char *endpoint) {
179- char state[2 ];
179+ char state[2 ], tstate[ 2 ] ;
180180 int authstatus = 0 ;
181181
182182 char ekey[KEYSIZE+1 ];
183183 char rtoken[TOKENSIZE+1 ];
184184 char rtokensecret[TOKENSECRETSIZE+1 ];
185+ char flag[FLAGSIZE+1 ];
185186 char buff[2 *TOKENSECRETSIZE+2 ];
186187 char revokecode[REVOKECODESIZE+1 ];
187188
@@ -214,7 +215,7 @@ void MicroGear::getToken(char *gkey, char *galias, char* token, char* tokensecre
214215 Serial.println (" authclient is connected" );
215216 #endif
216217
217- authstatus = authclient->getGearToken (_REQUESTTOKEN,rtoken,rtokensecret,endpoint,gearkey,gearsecret,galias,scope,NULL ,NULL );
218+ authstatus = authclient->getGearToken (_REQUESTTOKEN,rtoken,rtokensecret,endpoint,flag, gearkey,gearsecret,galias,scope,NULL ,NULL );
218219 delay (1000 );
219220 #ifdef DEBUG_H
220221 Serial.println (authstatus); Serial.println (rtoken); Serial.println (rtokensecret); Serial.println (endpoint);
@@ -227,7 +228,6 @@ void MicroGear::getToken(char *gkey, char *galias, char* token, char* tokensecre
227228 writeEEPROM (gearkey,EEPROM_KEYOFFSET,KEYSIZE);
228229 writeEEPROM (rtoken,EEPROM_TOKENOFFSET,TOKENSIZE);
229230 writeEEPROM (rtokensecret,EEPROM_TOKENSECRETOFFSET,TOKENSECRETSIZE);
230-
231231 #ifdef DEBUG_H
232232 Serial.println (" @ Write Request Token" );
233233 Serial.println (state);
@@ -259,7 +259,7 @@ void MicroGear::getToken(char *gkey, char *galias, char* token, char* tokensecre
259259 #ifdef DEBUG_H
260260 Serial.println (" authclient is connected, get access token" );
261261 #endif
262- authstatus = authclient->getGearToken (_ACCESSTOKEN,token,tokensecret,endpoint,gearkey,gearsecret,galias," " ,rtoken,rtokensecret);
262+ authstatus = authclient->getGearToken (_ACCESSTOKEN,token,tokensecret,endpoint,flag, gearkey,gearsecret,galias," " ,rtoken,rtokensecret);
263263 delay (1000 );
264264 authclient->stop ();
265265 delay (1000 );
@@ -271,13 +271,21 @@ void MicroGear::getToken(char *gkey, char *galias, char* token, char* tokensecre
271271 delay (1000 );
272272 }
273273 }
274-
275274 #ifdef DEBUG_H
276275 Serial.println (authstatus);
276+ Serial.print (" flag = " );
277+ Serial.println (flag[0 ]);
277278 #endif
279+
280+ // still write an EEPROM ic case of flag S
278281 if (authstatus == 200 ) {
279282 *state = EEPROM_STATE_ACC;
280- writeEEPROM (state,EEPROM_STATEOFFSET,1 );
283+
284+ // if return with session flag mark eeprom token as null
285+ if (flag[0 ] != ' S' ) *tstate = EEPROM_STATE_ACC;
286+ else *tstate = EEPROM_STATE_NUL;
287+
288+ writeEEPROM (tstate,EEPROM_STATEOFFSET,1 );
281289 writeEEPROM (gearkey,EEPROM_KEYOFFSET,KEYSIZE);
282290 writeEEPROM (token,EEPROM_TOKENOFFSET,TOKENSIZE);
283291 writeEEPROM (tokensecret,EEPROM_TOKENSECRETOFFSET,TOKENSECRETSIZE);
@@ -421,18 +429,6 @@ boolean MicroGear::connect(char* appid) {
421429 if (backoff < MAXBACKOFFTIME) backoff = 2 *backoff;
422430 delay (backoff);
423431 break ;
424- case CLIENT_REJECTED :
425- #ifdef DEBUG_H
426- Serial.println (" mqtt connection rejected" );
427- Serial.println (retry);
428- #endif
429- if (--retry <= 0 ) {
430- resetToken ();
431- #ifdef DEBUG_H
432- Serial.println (" Reset token" );
433- #endif
434- }
435- break ;
436432 }
437433 return constate;
438434 }
0 commit comments