2012-04-05 9 views
7

मैं लिंक्डइन एकीकरण के लिए LinkedIn-j एपीआई का उपयोग कर रहा हूं। मैं स्थिति अद्यतन पोस्ट करने में सक्षम हूं। मैं चाहता हूं कि एंड्रॉइड में WebView में उपयोगकर्ता प्रोफ़ाइल दिखाने के लिए मुझे नीचे दिए गए कोड का उपयोग कर उपयोगकर्ता सार्वजनिक यूआरएल मिल रहा है।लिंक किए गए एक बार प्रमाणीकृत: उपयोगकर्ता प्रोफ़ाइल के यूआरएल को कॉल करते समय फिर से प्रमाणीकरण के लिए पूछें

person.getSiteStandardProfileRequest().getUrl(); 

जो इस http://www.linkedin.com/profileviewProfile=&key=100652876&authToken=AWW7&authType=name&trk=api*a169149*s177398*

की तरह कुछ लौट रहा WebView में इस यूआरएल को खोलने के लिए जा रहा हूँ, तो तो लिंक्डइन लॉग इन पृष्ठ पर और क्रेडेंशियल भरने मैं उपयोगकर्ता प्रोफ़ाइल देख सकते हैं के बाद अपने पुन: निर्देशित।

मैं क्रेडेंशियल में प्रवेश के बिना उपयोगकर्ता प्रोफ़ाइल खोलना चाहते हैं, फिर

मैं भी

URL&accesstoken="tokenIdReturned by Application"; 

जोड़कर की कोशिश की लेकिन फिर भी मैं सीधे उपयोगकर्ता प्रोफ़ाइल को खोलने के लिए सक्षम नहीं हूँ। मुझे क्या याद आ रही है?

+0

समस्या क्या है? क्या आपको कोई त्रुटि मिल रही है? – kosa

+0

@ थिंकस्टीप कोई त्रुटि नहीं है/कोई बल बंद नहीं है, बस यह फिर से लॉगिन करने में संवेदना करता है मैं सत्र/कुकी को जिंदा रखना चाहता हूं। अच्छा समाधान के लिए – MKJParekh

उत्तर

5

मुझे वही आवश्यकता थी और मैंने इसे दो चीजों के साथ किया है।

सबसे पहले मैं मेरा अपना WebView का इस्तेमाल किया है अलग URL लोड करने में प्रमाणित करने के लिए और दिखाने के लिए मेरी WebViewpublic static रूप बजाय डिफ़ॉल्ट ब्राउज़र का उपयोग कर रहा है मेरी गतिविधि में अपने ही WebView पर कॉल रीडायरेक्ट profiles.I बना दिया है ।

दूसरा मैंने webview.getSettings().setAppCacheEnabled(true); सेट किया है, इसलिए अब यह प्रोफ़ाइल देखने के दौरान फिर से लॉगिन करने के लिए नहीं कहता है।

मैंने अपनी गतिविधि को घोषित किया है singleInstace Manifest.xml फ़ाइल में।

अद्यतन:

तरह से मैं मेरी गतिविधि में WebView का इस्तेमाल किया।

public static WebView WV = null; 
String uri; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    tv = (TextView) findViewById(R.id.tv); 
    if (WV == null) { 
     WV = (WebView) findViewById(R.id.webView1); 
     WV.getSettings().setJavaScriptEnabled(true); 
     WV.getSettings().setAppCacheEnabled(true); // the important change 
     WV.getSettings().setSupportZoom(true); 
     WV.getSettings().setBuiltInZoomControls(true); 
    } 

    final SharedPreferences pref = getSharedPreferences(OAUTH_PREF, 
      MODE_PRIVATE); 
    final String token = pref.getString(PREF_TOKEN, null); 
    final String tokenSecret = pref.getString(PREF_TOKENSECRET, null); 
    if (token == null || tokenSecret == null) { 
     startAutheniticate(); 
    } else { 
     showCurrentUser(new LinkedInAccessToken(token, tokenSecret)); 
    } 

} 


void startAutheniticate() { 
    final LinkedInRequestToken liToken = oAuthService 
      .getOAuthRequestToken(OAUTH_CALLBACK_URL); 
    uri = liToken.getAuthorizationUrl(); 
    getSharedPreferences(OAUTH_PREF, MODE_PRIVATE).edit() 
      .putString(PREF_REQTOKENSECRET, liToken.getTokenSecret()) 
      .commit(); 
    WV.loadUrl(uri); 
} 

void showCurrentUser(final LinkedInAccessToken accessToken) { 
    // code to get Profile object using Linkedin-J API 
    //which is already available on the API site as Example 

    WV.loadUrl(profile.getSiteStandardProfileRequest().getUrl()); 
} 
+1

+1 .. :) –

+1

+1 अच्छा समाधान एमजे। –

+0

धन्यवाद आप, और आप सभी वेल-आओ। – MKJParekh

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