2012-11-20 42 views
9

मैं एक से अधिक खातोंएंड्रॉइड ड्रॉपबॉक्स एसडीके 1.5.1 में एकाधिक खातों को प्रमाणित करने के लिए कैसे?

मैं मंच खोज की है प्रमाणित करने के लिए की जरूरत है, और ऐसा लगता है जैसे कि यह संभव तो मैं इसे एक कोशिश दे दिया है, लेकिन मैं

में विफल रहा है मैं एक ही एपीआई APP_KEY & APP_SECRET उपयोग करने की कोशिश की थी , यह असफल दोनों मेरी सत्र लौट ही पहुंच टोकन जोड़ी

तो मैं अलग एपीआई APP_KEY & APP_SECRET उपयोग करने का प्रयास ही ड्रॉपबॉक्स खाते के तहत, यह भी विफल रही है

तो मैं अलग-अलग ड्रॉपबॉक्स खातों से अलग-अलग API APP_KEY & APP_SECRET का उपयोग करके फिर से प्रयास करता हूं, यह अभी भी

कोई भी मुझे समाधान प्रदान कर सकता है? अग्रिम

नीचे धन्यवाद मेरी कोड मुख्य रूप से DBroulette उदाहरण से आता है,

OnCreate (एंड्रॉयड)

AndroidAuthSession session = buildSession(); 
mApi = new DropboxAPI<AndroidAuthSession>(session); 
AndroidAuthSession session2 = buildSession2(); 
mApi2 = new DropboxAPI<AndroidAuthSession>(session2); 

onResume (एंड्रॉयड)

AndroidAuthSession session = mApi.getSession(); 
if (session.isLinked()) { 
dbsetLoggedIn(true); 
} else { 
dbsetLoggedIn(false); 
} 
if (session.authenticationSuccessful()) { 
try { 
session.finishAuthentication(); 
TokenPair tokens = session.getAccessTokenPair(); 
dbstoreKeys(tokens.key, tokens.secret); 
dbsetLoggedIn(true); 
statusTv.append("Dropbox authentication successful\n"); 
} catch (IllegalStateException e) { 
Log.i("Dropbox Error", "Error authenticating", e); 
} 
} 

AndroidAuthSession session2 = mApi2.getSession(); 
if (session2.isLinked()) { 
dbsetLoggedIn2(true); 
} else { 
dbsetLoggedIn2(false); 
} 
if (session2.authenticationSuccessful()) { 
try { 
session2.finishAuthentication(); 
TokenPair tokens = session2.getAccessTokenPair(); 
dbstoreKeys2(tokens.key, tokens.secret); 
dbsetLoggedIn2(true); 
statusTv.append("2Dropbox authentication successful\n"); 
} catch (IllegalStateException e) { 
Log.i("Dropbox Error", "Error authenticating", e); 
} 
} 

अन्य कोड

private AndroidAuthSession buildSession() { 
AppKeyPair appKeyPair = new AppKeyPair(Constants.APP_KEY, Constants.APP_SECRET); 
AndroidAuthSession session; 
String[] stored = getKeys(); 
if (stored != null) { 
AccessTokenPair accessToken = new AccessTokenPair(stored[0], stored[1]); 
session = new AndroidAuthSession(appKeyPair, Constants.ACCESS_TYPE, accessToken); 
} else { 
session = new AndroidAuthSession(appKeyPair, Constants.ACCESS_TYPE); 
} 
return session; 
} 

private AndroidAuthSession buildSession2() { 
AppKeyPair appKeyPair = new AppKeyPair(Constants.APP_KEY2, Constants.APP_SECRET2); 
AndroidAuthSession session; 
String[] stored = getKeys2(); 
if (stored != null) { 
AccessTokenPair accessToken = new AccessTokenPair(stored[0], stored[1]); 
session = new AndroidAuthSession(appKeyPair, Constants.ACCESS_TYPE, accessToken); 
} else { 
session = new AndroidAuthSession(appKeyPair, Constants.ACCESS_TYPE); 
} 
return session; 
} 

private String[] getKeys() { 
SharedPreferences prefs = getSharedPreferences(Constants.ACCOUNT_PREFS_NAME, 0); 
String key = prefs.getString(Constants.ACCESS_KEY_NAME, null); 
String secret = prefs.getString(Constants.ACCESS_SECRET_NAME, null); 
if (key != null && secret != null) { 
String[] ret = new String[2]; 
ret[0] = key; 
ret[1] = secret; 
return ret; 
} else { 
return null; 
} 
} 

private String[] getKeys2() { 
SharedPreferences prefs = getSharedPreferences(Constants.ACCOUNT_PREFS_NAME, 0); 
String key = prefs.getString(Constants.ACCESS_KEY_NAME2, null); 
String secret = prefs.getString(Constants.ACCESS_SECRET_NAME2, null); 
if (key != null && secret != null) { 
String[] ret = new String[2]; 
ret[0] = key; 
ret[1] = secret; 
return ret; 
} else { 
return null; 
} 
} 

मैंने देखा कि मुझे किसी अन्य जोड़ने में मैनिफेस्ट में कुछ जोड़ने की आवश्यकता है लेकिन मैं अलग-अलग एपीपी कुंजी के साथ एंड्रॉइड मेनिफेस्ट में दूसरी गतिविधि नहीं जोड़ सकता क्योंकि यह डुप्लीकेट त्रुटि का कारण बन सकता है मैं इसे कैसे कर सकता हूं?

<activity 
android:name="com.dropbox.client2.android.AuthActivity" 
android:configChanges="orientation|keyboard" 
android:launchMode="singleTask" > 
<intent-filter> 
<data android:scheme="db-XXXXXXXXXXXX" /> 

<action android:name="android.intent.action.VIEW" /> 

<category android:name="android.intent.category.BROWSABLE" /> 
<category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 
</activity> 
+0

अभी भी मदद की तलाश में – tcboy88

+0

क्या आपने यह काम किया है? – tipycalFlow

उत्तर

1

मैं अगर यह आपको आपके उपयोग के मामले में एक छोटा सा मदद मिलेगी यकीन नहीं है, लेकिन शायद यह एक समाधान के प्रमाणीकरण अलग करने के एंड्रॉयड निर्माण में खाता प्रबंधन उपयोग करने के लिए अपने स्वयं के प्रमाणक लिखने के लिए हो सकता है प्रक्रियाओं। यहां एक उदाहरण है: http://udinic.wordpress.com/2013/04/24/write-your-own-android-authenticator/

1

मैं इसी तरह की आवश्यकता में भाग गया और इस तरह मैंने आसपास काम किया।

पहला ऐप
सामान्य ड्रॉपबॉक्स प्रवाह का उपयोग करके अपने पहले एप्लिकेशन तक पहुंच प्राप्त करें।

नोट: 2 ड्रॉपबॉक्स अनुप्रयोगों की आवश्यकता के लिए एक संभावित मामला एक अलग ड्रॉपबॉक्स एप्लिकेशन का उपयोग कर आपके सर्वर से उपयोगकर्ता खाते तक पहुंच सकता है। कृपया ध्यान दें कि आप अपने सर्वर के साथ 1 ऐप से एक्सेस टोकन साझा कर सकते हैं और इन क्रेडेंशियल्स को सुरक्षित रूप से पुन: उपयोग कर सकते हैं, बशर्ते आप सर्वर पर एक ही ड्रॉपबॉक्स एप्लिकेशन का उपयोग कर रहे हों। यदि आप इसके साथ नहीं रह सकते हैं, तो पढ़ना जारी रखें।

2 अनुप्रयोग
विकल्प 1: अन्य Android ऐप्लिकेशन

  1. सिर्फ 2 ड्रॉपबॉक्स अनुप्रयोग के लिए oAuth प्रवाह के लिए एक और Android एप्लिकेशन बनाएं का उपयोग करना।
  2. ऐप 1 से app2 में oAuthflow को ट्रिगर करने के इरादे का उपयोग करें।
  3. फिर,, APP2 से वापस टोकन डेटा भेजने के लिए आशय का उपयोग आप इस का उपयोग करने जा रहे हैं

कुछ टिप्स APP1 के लिए:

  1. App2 oAuth गतिविधि पारदर्शी
  2. की पृष्ठभूमि बनाओ App2 गतिविधि में की
  3. उत्प्रेरक oAuth onCreate
> APP2 संक्रमण -
  • APP1 < के लिए आशय परिवर्तन एनिमेशन निकालें

    विकल्प 2: यदि आप इसे केवल एक एंड्रॉइड ऐप के साथ कर रहे हैं, तो मुझे नीचे वर्णित एक संभावित कार्यवाही मिली है।

    1. अपने उपयोगकर्ता इस यूआरएल को खोलने के लिए आदेश: https://www.dropbox.com/1/oauth2/authorize?response_type=code&client_id=APP2_CLIENT_ID
    2. वे ड्रॉपबॉक्स
    3. इस प्राधिकरण कोड द्वारा दिया एक प्राधिकरण कोड वापस कॉपी करने के लिए 2 एप्लिकेशन
    4. के लिए access_tokens प्राप्त करने के लिए इस्तेमाल किया जा सकता होगा

    यदि आप किसी सर्वर पक्ष संदर्भ में दूसरे ऐप का उपयोग करने जा रहे हैं, तो बस अपने सर्वर के साथ प्राधिकरण कोड साझा करें। आप प्राधिकरण कोड से टोकन प्राप्त कर सकते हैं, एक अजगर के प्रवाह में, इस तरह:

    flow = client.DropboxOAuth2FlowNoRedirect(app2_key, app2_secret) 
    authorize_url = flow.start() 
    access_token, user_id = flow.finish(auth_code_from_client) 
    

    अधिक सामान्य तरीके प्राधिकरण कुंजी से access_tokens प्राप्त करने के लिए के लिए, look at this

  • 0

    ड्रॉपबॉक्स एपीआई कुछ समस्याएं हो रही है या आप एक कह सकते हैं कई लॉग इन करने के लिए आपको उपयोग करने की आवश्यकता है।

    1. प्रचार उपयोग session.startOAuth2Authentication(act, "", sAuthenticatedUid) अलग पद्धति

    का उपयोग कर startOAuth2Authentication() के बजाय

    प्रमाणीकरण के लिए String []

    private static final String[] sAuthenticatedUid = { "dummy"}; // Keeping only one Auth Id to keep last authenticated item

    2. प्रारंभ OAuth के रूप में sAuthenticatedUid 3. authe पर चर बनाए रखें ntication सफलता

    sAuthenticatedUid[0] = sessionApi.getSession().finishAuthentication(); // Save the last successful UID 
    String oauth2AccessToken = sessionApi.getSession().getOAuth2AccessToken(); 
    AuthActivity.result = null; // Reset this so that we can login again, call only after finishAuthentication() 
    

    AuthActivity com.dropbox.client2.android.AuthActivity जो पिछले प्रमाणीकरण से परिणाम संग्रहीत करता है और समस्या पैदा कर सकता है के रूप में इस स्थिर चर रहा है है।

    आपको जितना चाहें उतने लॉग इन करने में सक्षम होना चाहिए।