2012-07-20 13 views
5

मैं फेसबुक और Windows LiveID के लिए एक उपयोगकर्ता लॉगिन DotNetOpenAuth 4.1.0.12182Facebook के साथ DotNetOpenAuth 4.1.0.12182

का उपयोग कर फिर भी डाउनलोड में उदाहरण DotNetOpenAuth.ApplicationBlock और DotNetOpenAuth.ApplicationBlock.Facebook का इस्तेमाल करते हैं जो नहीं है बनाने के प्रयास कर रहा हूँ वर्तमान निर्माण में मौजूद है।

इसके बजाय DotNetOpenAuth.AspNet.Clients नामस्थान है जिसमें FacebookClient और WindowsLiveClient शामिल हैं - हालांकि मुझे इनका उपयोग करने का कोई उदाहरण नहीं मिल रहा है।

क्या कोई उदाहरण या दस्तावेज मौजूद है?

उत्तर

15

मैं एक FacebookAuthClient कि के बंद प्राप्त होता है बनाने के द्वारा DNOA संस्करण 4.1.0.12182, नेट 3.5 और फेसबुक एक दूसरे के साथ काम करने के लिए प्राप्त करने के लिए सक्षम किया गया है DotNetOpenAuth.OAuth2.WebServerClient। मुझे पता चला कि एक छोटा गॉचा यह है कि यदि आप कुकी आधारित सत्रों का उपयोग कर रहे हैं तो आपको OAuth कार्यक्षमता का उपयोग करने से पहले सत्र तक पहुंचना होगा। जो मैं इसे बता सकता हूं वह इसलिए है क्योंकि डीएनओए सत्र आईडी का उपयोग राज्य पैरामीटर के रूप में करता है और यदि सत्र को कभी भी एक्सेस नहीं किया गया है तो यह अनुरोधों के बीच बदल सकता है। जब प्रतिक्रिया फेसबुक से वापस आती है तो इससे राज्य पैरामीटर विसंगति त्रुटि उत्पन्न होगी।

FacebookAuthClient:

public class FacebookAuthClient : DotNetOpenAuth.OAuth2.WebServerClient 
{ 
    private static readonly DotNetOpenAuth.OAuth2.AuthorizationServerDescription Description = new DotNetOpenAuth.OAuth2.AuthorizationServerDescription 
    { 
     TokenEndpoint = new Uri("https://graph.facebook.com/oauth/access_token"), 
     AuthorzationEndpoint = new Uri("https://graph.facebook.com/oauth/authorize")  
    }; 

    public static readonly string [] ScopeNeeded = { "publish_stream" }; 

    public FacebookAuthClient() 
     : base(Description) 

    { 
    } 
} 

Facebook.aspx.cs:

public partial class FacebookPage : System.Web.UI.Page 
{ 
    private FacebookAuthClient _client = new FacebookAuthClient 
    { 
     ClientIdentifier = ConfigurationManager.AppSettings["FBClientId"], //The FB app's Id 
     ClientCredentialApplicator = DotNetOpenAuth.OAuth2.ClientCredentialApplicator.PostParameter(ConfigurationManager.AppSettings["FBClientSecret"]) // The FB app's secret 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     DotNetOpenAuth.OAuth2.IAuthorizationState auth = _client.ProcessUserAuthorization(); 
     if (_auth == null) 
     { 
      // Kick off authorization request with the required scope info 
      client.RequestUserAuthorization(FacebookAuthClient.ScopeNeeded); 
     } 
    } 
} 

यह सिर्फ एक परीक्षण ऐप को तो कोई त्रुटि हैंडलिंग, लेकिन यह काम करने के लिए लगता है।

संपादित करें मैंने इन सभी के लिए DotNetOpenAuth (एकीकृत) NuGet पैकेज का उपयोग किया।

संपादित करें जोड़ा गया गुम .PostParameter क्लाइंट क्रेडेंशियल ऐप्लिकेटर बनाने के लिए कॉल करें।

+0

जोश साझा करने के लिए धन्यवाद - मैं चाहता हूं कि इसमें प्रकाश में लाने के लिए एसओ बाउंटी शामिल न हो! (आपके या किसी के लिए लक्षित नहीं) –

+0

'DotNetOpenAuth.OAuth2.ClientCredentialApplicator' कहता है कि यह एक प्रकार है, लेकिन मैं इससे '.NETCredential' का उपयोग कर सकता हूं। लेकिन फिर मुझे त्रुटि 400 खराब अनुरोध मिलता है। – BrunoLM

+0

ब्रूनोएलएम - यह इंगित करने के लिए धन्यवाद कि मैंने कोड को DotNetOpenAuth.OAuth2.ClientCredentialApplicator.PostParameter से अपडेट किया है। पोस्ट पैरामीटर भाग पर ध्यान दें जो –

1

आपको डीएनओए के सीटीपी संस्करण 3.5 का उपयोग करने की आवश्यकता होगी। संस्करण 4+ को OAuth 2 के बाद के मसौदे के साथ काम करने के लिए बनाया गया है, तो फेसबुक का उपयोग करता है।

आप इसे मालिकों पर पा सकते हैं GitHub: https://github.com/AArnott/dotnetopenid

+1

यदि ऐसा है, तो लाइब्रेरी में 'फेसबुक क्लाइंट' कक्षा क्यों मौजूद है? –

+0

मैंने डीएनओए के निर्माता के साथ इस बारे में काफी हद तक चर्चा की है, उन्होंने इंगित किया कि इस तथ्य के कारण यह संभवतः बाद में काम करेगा जब फेसबुक नवीनतम ड्राफ्ट तक पहुंचने का फैसला करता है। तब तक अनुरोधों को संभालने के अलावा, कोई अन्य समाधान नहीं है। –

+3

यदि यह (अन्य)) मुद्दों के बारे में डीएनओए पर एक प्रमुख एफएक्यू था तो यह बहुत उपयोगी होगा। डीओएनए ओपनआईडी/ओएथ का उपयोग करके सरलीकृत करने का एक लंबा रास्ता तय करता है - लेकिन इस तरह के मुद्दे ताजा प्रश्न पेश करते हैं –

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

  • कोई संबंधित समस्या नहीं^_^