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 });
}
}
लेकिन विभिन्न प्रदाताओं अलग कुंजी का उपयोग हो सकता है। तो प्रयुक्त प्रदाता के आधार पर आपको वांछित जानकारी पढ़ने के लिए उचित कुंजी का उपयोग करना होगा।
स्रोत
2013-02-23 17:59:45
हाय डियरियन, शनिवार को तत्काल प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! :) हां, मुझे पता है कि सामाजिक एपीआई के साथ अपने एपीआई का उपयोग करके संवाद कैसे करें, लेकिन इस समय मुझे पता नहीं लगा सकता कि अनुरोध में टोकन को कैसे संलग्न किया जाए। क्या मुझे मैन्युअल रूप से अनुरोध तैयार करना है या फ्रेमवर्क में पहले से ही मौजूदा कक्षाएं हैं जिनका मैं उपयोग कर सकता हूं? –
विभिन्न प्रदाता एसडीके प्रदान कर सकते हैं जो इस कार्य को प्राप्त करने में आपकी मदद कर सकते हैं। यह देखने के लिए कि क्या यह .NET क्लाइंट के लिए एसडीके प्रदान करता है, अपने सेवा प्रदाता के दस्तावेज़ों की जांच करें। यदि ऐसा नहीं होता है तो आप संबंधित अंतराल पर HTTP अनुरोध भेजकर मैन्युअल रूप से अनुरोध निष्पादित कर सकते हैं। आपको निश्चित रूप से दस्तावेज जांचना होगा कि एपीआई एक्सेस टोकन भेजने की अपेक्षा करता है। विभिन्न प्रदाताओं के अलग-अलग कार्यान्वयन होते हैं। –