2012-12-15 11 views
5

में नए OAuth 2 का उपयोग करके मैं OAuth के साथ नए बॉक्स प्रमाणीकरण API का उपयोग करने का प्रयास कर रहा हूं। मैं उस बॉक्स खाते के प्रमाण पत्र का उपयोग करना चाहता हूं जिसका मैं वर्तमान में अपने आवेदन को अधिकृत करने के लिए उपयोग कर रहा हूं।बॉक्स

ओएथ की कॉन्फ़िगरेशन एक पुनर्निर्देशन यूआरआई का अनुरोध करती है और मुझे नहीं पता कि वहां क्या दर्ज किया जाना चाहिए। पिछली प्रमाणीकरण विधि में, निम्नलिखित यूआरआई को http://www.box.net/api/1.0/auth/ {टिकट} दिया गया था, लेकिन यह प्रमाणीकरण टिकट प्राप्त करने के बाद किया गया था।

मैं ओएथ के लिए नया हूं इसलिए मेरा प्रश्न थोड़ा स्पष्ट हो सकता है ... लेकिन मैं जानना चाहता हूं कि बॉक्स खाता उपयोगकर्ता के प्रमाण-पत्रों के साथ प्रमाणीकरण कैसे करें।

मैं इसे विंडोज़ एप्लिकेशन में कर रहा हूं, इसलिए मैं यह भी समझना चाहूंगा कि अनुरोध से प्रतिक्रिया कैसे दिखाना है।

उत्तर

1

ओएथ 2 प्रक्रिया में पहला कदम उपयोगकर्ता को https://api.box.com/oauth2/authorize पर प्रतिक्रिया_type और client_id के अनुरोध के पैरामीटर के रूप में भेज रहा है। रीडायरेक्ट यूआरएल वही होगा जो आपने वी 1 में सेट किया था। यदि आप client_id 123456 था, उदाहरण के लिए, आप

https://api.box.com/oauth2/authorize?response_type=code&client_id=123456 

See here for more info करने के लिए उपयोगकर्ता निर्देशन कर सकें।

+0

क्षमा करें, लेकिन मैं सभी दस्तावेज़ पर समझ में नहीं आता। एथ वी 1 में मैं किसी भी रीडायरेक्ट यूआरएल का उपयोग नहीं कर रहा हूं। मुझे टिकट मिल गया है और टिकट के साथ http://www.box.net/api/1.0/auth पर कॉल करें। – user1466502

+1

क्षमा करें, लेकिन मुझे सभी दस्तावेज में समझ में नहीं आता है। एथ वी 1 में मैं किसी भी रीडायरेक्ट यूआरएल का उपयोग नहीं कर रहा हूं। मुझे टिकट मिल गया है और टिकट के साथ http://www.box.net/api/1.0/auth पर कॉल करें। मैंने https://www.box.net/api/1.0/auth डालने की कोशिश की क्योंकि ओएथ को एक https यूआरएल की आवश्यकता है, लेकिन अगर मैं https://api.box.com/oauth2/authorize?response_type=code&client_id= { मेरा ग्राहक आईडी}, मुझे त्रुटि मिलती है: invalid_client। मैं देख सकता हूं कि क्लाइंट_आईडी V1 api_key जैसा ही मान है, इसलिए यह एथ वी 1 के साथ काम करता है, मैं ओथ के साथ फंस गया हूं। यदि किसी के पास एक साधारण बॉक्स खाते में लॉगिन करने के लिए एक ठोस उदाहरण है, तो अत्यधिक सराहना की! – user1466502

+1

@ user1466502, आपका एप्लिकेशन डेस्कटॉप या वेब?Redirect_uri के रूप में सेट करने का प्रयास करें किसी भी https यूआरएल (यहां तक ​​कि मौजूद नहीं है)। इनपुट लॉगिन/पीडब्ल्यूडी डेटा के बाद और आपको बॉक्स.com से प्रतिक्रिया प्राप्त करने की अनुमति मिलती है, जिसमें डिफ़ॉल्ट रूप से बॉक्स.com पर रीडायरेक्ट होगा, लेकिन आपके यूआरएल और कोड के साथ प्रतिक्रिया शरीर में कुछ टैग (अगर मैं गलती नहीं करता हूं: iframe) मूल्य –

2

जब मैं डेस्कटॉप लॉगिन प्रमाणीकरण प्राप्त करने की कोशिश के लिए एक Box.net आवेदन बनाने पर जवाब के लिए चारों ओर खोज रहा था ले लिया अधिक है कि तुलना में यह वास्तव में होना चाहिए ...

तो मैं पर एक साथ एक लेख डाल करने का निर्णय लिया मेरी वेबसाइट जो एक सी # नेट 4.0 डेस्कटॉप एप्लिकेशन बनाने की प्रक्रिया के माध्यम से बात करती है जो लॉगिन और उनके एसडीके के साथ काम कर सकती है। यह उनके नए ओएथ 2.0 लॉगिन सिस्टम का उपयोग कर रहा है।

सबसे पहले हम OAuth 2.0 लॉगिन के लिए UI वेब पेज प्राप्त करने के लिए मानक HttpWebRequest ऑब्जेक्ट का उपयोग करके प्रारंभिक वेब अनुरोध भेजते हैं। एक बार वेब प्रतिक्रिया लौटा दी जाने के बाद, हम इसे अपने वेब ब्राउज़र के उपभोग के लिए स्ट्रीम में परिवर्तित कर देते हैं। रीडायरेक्ट यूआरआई कोई भी HTTPS आधारित यूआरआई हो सकता है।

string baseURI = "https://www.box.com/api/oauth2/authorize?"; 
string responseType = "&response_type=code"; 
string clientId = "&client_id=YOUR OWN CLIENT ID"; 
string redirectURI = "&redirect_uri=https://app.box.com/services/poc_connector"; 

var targetUri = new Uri(baseURI + responseType + clientId + redirectURI); 
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(targetUri); 

वेब ब्राउज़र नियंत्रण हम दस्तावेज़ संपत्ति

webBrowser1.DocumentStream = view; 

एक बार यह हो जाता है सभी उपयोगकर्ता द्वारा संचालन वेब ब्राउज़र नियंत्रण द्वारा नियंत्रित किया जाता है का उपयोग में स्ट्रीम इंजेक्षन करने के लिए। जब उपयोगकर्ता "अनुदान पहुंच" बटन दबाता है तो प्रमाणीकरण टोकन को कैप्चर करने के लिए। हम वेब-ब्राउजर नेविगेटेड ईवेंट के लिए इवेंट श्रोता जोड़ते हैं।

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) 
{ 
    if (e.Url.AbsolutePath != "blank" && e.Url.ToString().Contains("&code=")) 
    { 
     Token = e.Url.ToString().Substring(e.Url.ToString().IndexOf("&code=")); 
     Token = Token.Replace("&code=", String.Empty); 
     this.Close(); 
    } 
} 

लिंक अपने मूल लेख और स्रोत कोड: link

+1

ध्यान दें कि [लिंक-केवल उत्तर] (http://meta.stackoverflow.com/tags/link-only-answers/info) निराश हैं, इसलिए SO समाधान समाधान के लिए खोज का अंत बिंदु होना चाहिए (बनाम। फिर भी संदर्भों का एक और स्टॉपओवर, जो समय के साथ पुराना हो जाता है)। लिंक को संदर्भ के रूप में रखते हुए, यहां स्टैंड-अलोन सारांश जोड़ना पर विचार करें। – kleopatra

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