2012-02-08 20 views
6

Google खाते के लिए ऑथ टोकन प्राप्त करने के लिए एंड्रॉइड के खाता प्रबंधक का उपयोग करते समय मुझे एक अजीब व्यवहार मिला है।AccountManager.getAuthToken खाली स्ट्रिंग देता है, कभी-कभी

जब ऐप लॉन्च होता है, तो getAuthToken पर पहली कॉल टोकन के रूप में एक खाली स्ट्रिंग के साथ एक बंडल देता है। अगली बार, मैं एक ही विधि को कॉल करता हूं, यह एक वैध टोकन देता है।

यहाँ मेरी कोड है:

public String updateToken(final boolean invalidateToken, final Context c) { 
    String authToken = ""; 
    try { 
     final AccountManager am = AccountManager.get(c); 
     final Account[] accounts = am.getAccountsByType("com.google"); 

     final Bundle bundle = am.getAuthToken(accounts[0], "android", true, 
       null, null).getResult(); 

     authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN) 
       .toString(); 

     if (invalidateToken) { 
      am.invalidateAuthToken("com.google", authToken); 
      authToken = updateToken(false, c); 
     } 
    } catch (final Exception e) { 
     //Just for debugging issues. 
     e.printStackTrace(); 
    } 
    return authToken; 
} 

ऐसा लगता है कि खाली टोकन, दिया जाता है जब इस विधि मेरी गतिविधि के onCreate विधि में कहा जाता है, हालांकि यह हमेशा ऐसा नहीं है।

अग्रिम धन्यवाद। इसके अलावा मुझे वास्तव में पता नहीं है कि टोकन को कब अमान्य करना है। दिन में एक बार? हर शुरूआत पर? या संकेतक खाली खाली टोकन है, कि टोकन को अमान्य किया जाना चाहिए, हालांकि यह अगली कॉल पर वैध टोकन देता है।

उत्तर

संबंधित मुद्दे