2014-06-09 15 views
5

के साथ OAuth2 को कार्यान्वित करना मैं यह पता लगाने की कोशिश कर रहा हूं कि एक रेट्रोफिट क्लाइंट को कार्यान्वित करने का सबसे अच्छा तरीका क्या होगा जो OAuth2 प्रवाह के लिए AccountManager.getAuthToken() का समर्थन करता है। मैं U2020खाता प्रबंधक, रेट्रोफिट और डैगर

आदर्श रूप में अनुसरण कर रहा हूँ मैं इन पंक्तियों के साथ एक सरल इंजेक्टर करना चाहते हैं

 
public class ExampleFragment extends InjectionFragment { 
    @Inject ApiDatabase database; 

    @Override public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    subscribe(database.getSomeData(), ...); 
    } 
} 

मैं एक RequestInterceptor the example

 
public final class ApiHeaders implements RequestInterceptor { 
    ApiKeyProvider apiKeyProvider; 

    @Inject 
    public ApiHeaders(ApiKeyProvider apiKeyProvider) { 
    this.apiKeyProvider = apiKeyProvider; 
    } 

    @Override 
    public void intercept(RequestFacade request) { 
    // How to handle exceptions from getAuthToken? 
    request.addHeader("Authorization", "Bearer " + apiKeyProvider.getAuthKey()); 
    } 
} 

और

के समान पर विचार कर रहा हूँ
 
public class ApiKeyProvider { 
    AccountManager accountManager; 
    Activity activity; 

    public ApiKeyProvider(Activity activity, AccountManager accountManager) { 
    this.activity = activity; 
    this.accountManager = accountManager; 
    } 

    public String getAuthKey() throws AccountsException, IOException { 
    AccountManagerFuture accountManagerFuture = accountManager.getAuthTokenByFeatures(ACCOUNT_TYPE, 
     AUTHTOKEN_TYPE, new String[0], activity, null, null, null, null); 

    return accountManagerFuture.getResult().getString(KEY_AUTHTOKEN); 
    } 
} 

मुझे यकीन नहीं है कि ApiKeyProvider को ApiHeaders क्लास में इंजेक्ट कैसे करें क्योंकि यह "गतिविधि मॉड्यूल" (डैगर डीएजी ग्राफ़ को कम करता है) पर निर्भर करता है। यह भी सुनिश्चित नहीं है कि अपवादों को कैसे संभाला जाए।

क्या कोई भी पूर्ण कार्य उदाहरण प्रदान कर सकता है?

उत्तर

5

यह थोड़ा लंबा हो गया। This GIST उम्मीद है कि सभी प्रासंगिक फाइलों को शामिल किया गया है

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