के साथ 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 क्लास में इंजेक्ट कैसे करें क्योंकि यह "गतिविधि मॉड्यूल" (डैगर डीएजी ग्राफ़ को कम करता है) पर निर्भर करता है। यह भी सुनिश्चित नहीं है कि अपवादों को कैसे संभाला जाए।
क्या कोई भी पूर्ण कार्य उदाहरण प्रदान कर सकता है?