2012-07-25 11 views
6

मैं अपने एंड्रॉइड ऐप में लिंक्डइन OAuth का उपयोग कर रहा हूं। मेरे पास एक लिंक्डइन एप्लिकेशन, उपभोक्ता कुंजी और रहस्य पहले से ही है, जिसके परिणामस्वरूप मैं सफलतापूर्वक अनुरोध कर सकता हूं।एंड्रॉइड: लिंक्डइन ओएथ कॉलबैक काम नहीं कर रहा

कॉलबैक तक सबकुछ ठीक है। वेब पेज वापस कॉल नहीं कर रहा है, मेरा मतलब है onNewIntent या onResume विधियों को कॉल नहीं करना। वेब पेज केवल पैरामीटर के साथ कॉलबैक यूआरएल दिखाता है। मेरा मतलब है ऐसा लगता है कि:

try { 
    consumer = new CommonsHttpOAuthConsumer("ConsumerKey", "ConsumerSecret"); 
provider = new CommonsHttpOAuthProvider("https://api.linkedin.com/uas/oauth/requestToken", "https://api.linkedin.com/uas/oauth/accessToken", "https://api.linkedin.com/uas/oauth/authorize"); 
    final String url = provider.retrieveRequestToken(consumer, Constants.OAUTH_CALLBACK_URL); 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND); 
    startActivity(intent);       
} catch (Exception e) { 
    e.printStackTrace(); 
} 

गतिविधि पहले से ही Manifest में singleInstance के रूप में परिभाषित किया गया है:

callback_url://?oauth_token=324sdf&oath_verifier=as21dsf 

यहाँ मेरी सभी कोड है।

क्या गलत है या गायब है?

उत्तर

2

मुझे एक लंबे शोध के बाद जवाब मिल गया है।

मैंने अपनी बेस क्लास को linkedin-j में बदल दिया है जिसे here पर देखा जा सकता है।

फिर नीचे के रूप में इस Constans सेट:

public static final String CONSUMER_KEY = "ConsumerKey"; 
    public static final String CONSUMER_SECRET = "ConsumerSecret"; 
    public static final String OAUTH_CALLBACK_SCHEME = "callback"; 
    public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + ":///"; 

और उस तरह से प्रारंभ:

LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory.getInstance().createLinkedInOAuthService(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 
LinkedInApiClientFactory factory = LinkedInApiClientFactory.newInstance(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 
LinkedInRequestToken liToken; 
LinkedInApiClient client; 

liToken = oAuthService.getOAuthRequestToken(Constants.OAUTH_CALLBACK_URL); 
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken.getAuthorizationUrl())); 
startActivity(i); 

यह अच्छी तरह से कॉलबैक और मैं OnNewIntent पर संभाला है:

String verifier = intent.getData().getQueryParameter("oauth_verifier"); 

LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(liToken, verifier); 
client = factory.createLinkedInApiClient(accessToken); 
client.postNetworkUpdate("Test"); 

बस इतना ही ।

+0

हाय मार्टिन, मेरे पास बहुत सारी खोज और डेमो परीक्षण था, अब आपके पोस्ट पर सभी उदाहरणों के साथ असफल रहा, मैं पहले जानना चाहता हूं, क्या आपका कोड एंड्रॉइड 4.0 और उसके बाद के संस्करण के साथ काम करता है? –

+0

क्या आप अपडेट कर सकते हैं कि आपका कोड उपरोक्त एंड्रॉइड 4.0 के साथ काम करता है या नहीं। उसमें जोड़ने के लिए कृपया अपने एंड्रॉइडमैनीफेस्ट.एक्सएमएल को भी साझा करें क्योंकि विवरण दर्ज करने के बाद मुझे एक ERR_UNKNOWN_URL_SCEME मिल रहा है और मेरे LinkedIn WebView पर एंटर दबाएं। –

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