2013-02-23 9 views
5

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

अद्यतन:

  1. यहाँ कुछ post और article का हिस्सा है कि कुछ प्रकाश
  2. उपयोगी article कैसे Facebook के साथ बातचीत करने के लिए

उत्तर

7

OAuth केवल प्रमाणीकृत करने, यानी एक पहुँच प्राप्त करने के लिए है टोकन। एक बार जब आप यह एक्सेस टोकन प्राप्त कर लेंगे तो आप सेवा प्रदाता से इस जानकारी को पुनः प्राप्त करने के लिए इसका उपयोग कर सकते हैं। प्रदाता के दस्तावेज़ीकरण से यह देखने के लिए परामर्श लें कि यह कैसे किया जा सकता है।

कुछ दावे हैं जिन्हें आप पुनर्प्राप्त कर सकते हैं जैसे कि फर्स्टनाम और लास्टनाम क्योंकि वे मानक हैं और अधिकांश प्रदाता उन्हें समर्थन देते हैं। ExternalLoginCallback कॉलबैक अंदर उदाहरण के लिए आप result.ExtraData शब्दकोश से यह जानकारी प्राप्त करने का प्रयास कर सकते हैं:

[AllowAnonymous] 
public ActionResult ExternalLoginCallback(string returnUrl) 
{ 
    AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); 
    if (!result.IsSuccessful) 
    { 
     return RedirectToAction("ExternalLoginFailure"); 
    } 

    if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) 
    { 
     return RedirectToLocal(returnUrl); 
    } 

    if (User.Identity.IsAuthenticated) 
    { 
     // Here you could use result.ExtraData dictionary 
     string name = result.ExtraData["name"]; 


     // If the current user is logged in add the new account 
     OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name); 
     return RedirectToLocal(returnUrl); 
    } 
    else 
    { 
     // User is new, ask for their desired membership name 
     string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); 
     ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName; 
     ViewBag.ReturnUrl = returnUrl; 
     return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData }); 
    } 
} 

लेकिन विभिन्न प्रदाताओं अलग कुंजी का उपयोग हो सकता है। तो प्रयुक्त प्रदाता के आधार पर आपको वांछित जानकारी पढ़ने के लिए उचित कुंजी का उपयोग करना होगा।

+0

हाय डियरियन, शनिवार को तत्काल प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! :) हां, मुझे पता है कि सामाजिक एपीआई के साथ अपने एपीआई का उपयोग करके संवाद कैसे करें, लेकिन इस समय मुझे पता नहीं लगा सकता कि अनुरोध में टोकन को कैसे संलग्न किया जाए। क्या मुझे मैन्युअल रूप से अनुरोध तैयार करना है या फ्रेमवर्क में पहले से ही मौजूदा कक्षाएं हैं जिनका मैं उपयोग कर सकता हूं? –

+0

विभिन्न प्रदाता एसडीके प्रदान कर सकते हैं जो इस कार्य को प्राप्त करने में आपकी मदद कर सकते हैं। यह देखने के लिए कि क्या यह .NET क्लाइंट के लिए एसडीके प्रदान करता है, अपने सेवा प्रदाता के दस्तावेज़ों की जांच करें। यदि ऐसा नहीं होता है तो आप संबंधित अंतराल पर HTTP अनुरोध भेजकर मैन्युअल रूप से अनुरोध निष्पादित कर सकते हैं। आपको निश्चित रूप से दस्तावेज जांचना होगा कि एपीआई एक्सेस टोकन भेजने की अपेक्षा करता है। विभिन्न प्रदाताओं के अलग-अलग कार्यान्वयन होते हैं। –

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