2013-05-08 10 views
7

मैं सीधे सीधे गोता लगाने जा रहा हूं और जो कुछ करने की कोशिश कर रहा हूं, मैंने जो कोशिश की है, और मेरे रास्ते में बाधाओं पर थोड़ा सा पृष्ठभूमि दे रहा हूं। इसलिए यहाँ जाता है ..सी # डेस्कटॉप एप्लिकेशन के साथ फेसबुक एकीकरण

मेरा लक्ष्य
एक फेसबुक प्रोफाइल या डेस्कटॉप एप्लिकेशन से दीवार में पोस्ट करने के।
डेस्कटॉप एप्लिकेशन का उपयोग उन व्यक्तिगत उपयोगकर्ताओं द्वारा किया जाएगा जिनके पास अपना स्वयं का फेसबुक खाता है।
लक्ष्य प्रत्येक उपयोगकर्ता को अपना स्वयं का फेसबुक ऐप बनाना और ऐप आईडी और ऐप रहस्य प्राप्त करना है।
और उसके बाद डेस्कटॉप एप्लिकेशन (डेटाबेस या कॉन्फ़िगरेशन में कहीं भी सहेजा गया) में ऐप आईडी और ऐप गुप्त का उपयोग करें डेस्कटॉप एप्लिकेशन के उपयोगकर्ता को अपने ईमेल पते और पासवर्ड को दर्ज करने के बिना अपने प्रोफाइल में पोस्ट करने की अनुमति देने के लिए पहले

तो संक्षेप में, फेसबुक फेसबुक प्रति 1 फेसबुक ऐप।
एप्लिकेशन सेटिंग

में मुख्य जोर प्रवेश करने जा रहा है यहां उपयोगकर्ता मैन्युअल रूप से एक खिड़की के माध्यम से या में लॉग इन करने की जरूरत नहीं है कि बिना अपने स्वयं के फेसबुक एप्लिकेशन के माध्यम से अपने खुद के फेसबुक के लिए प्रत्येक उपयोगकर्ता डेस्कटॉप अनुप्रयोग पोस्ट में सहेजा जाएगा ब्राउज़र।

मैंने अपना फेसबुक ऐप बनाया है और इसे लाइव स्थिति में सेट कर दिया है .. मैंने सेटिंग्स में (फेसबुक के भीतर) सभी संभावित अनुमतियों और विस्तारित अनुमतियों में भी जोड़ा है, यह सुनिश्चित करने के लिए कि मैं कुछ भी याद नहीं कर रहा था। तो मेरे पास मेरा एपआईडी और ऐप रहस्य है .. मेरे पास मेरा क्लाइंट टोकन भी है जो 'एथ विधियों' के लिए ऐप गुप्त के स्थान पर उपयोग करने के लिए कहता है। मैं इसका उपयोग टोकन प्राप्त करने के लिए करता हूं। मैं एप्लिकेशन गुप्त की कोशिश की और यह पहुँच टोकन

मेरी ATTEMPTS वापसी नहीं करता है:

सी # FACEBOOK एसडीके तो, मैं के साथ शुरू किया और अभी भी ग # एसडीके
मैं उपयोग करने के लिए कोशिश कर रहा हूँ मेरा एक्सेस टोकन पुनर्प्राप्त कर सकता है लेकिन पोस्ट नहीं कर सकता।

मैं जो कुछ भी कोशिश करता हूं उसके साथ मुझे हर समय त्रुटियों से नीचे मिलता है ... ये मैंने कोशिश किए गए कई कोड उदाहरणों में से केवल 2 हैं।
(OAuthException - # 2500) वर्तमान उपयोगकर्ता के बारे में जानकारी पूछने के लिए एक सक्रिय पहुंच टोकन का उपयोग किया जाना चाहिए।

dynamic r = fb.Post("me/feed", new { message = "My seconds wall post using Facebook C# SDK" });

(OAuthException - # 190) ग्राहक टोकन इस एपीआई

dynamic r = fb.Post("kevin.maguire.965/feed", new { message = "My second wall post using Facebook C# SDK" });

मैं नीचे दिए गए लिंक जो मेरे पहुँच टोकन राज्यों से निम्नलिखित उद्धरण पढ़ने के लिए नहीं किया जा सकता एक एप्लिकेशन है, टोकन और मुझे उपयोगकर्ता या पेज के लिए एक्सेस टोकन चाहिए? Need Help on OAuthException Code 2500 त्रुटि 2500 का मतलब है कि आपके पास टोकन या ऐप एक्सेस टोकन तक पहुंच नहीं है, लेकिन मैं/me/- 'me' तक पहुंचने का प्रयास कर रहा हूं, 'वर्तमान उपयोगकर्ता या पेज आईडी' के लिए प्लेसहोल्डर है, इसलिए एक्सेस टोकन के बिना मान्य नहीं होगा एक उपयोगकर्ता या पेज

तो, मैं और वापस निम्नलिखित उत्तर (Facebook C# SDK Get Current User)

var fb = new FacebookClient("access_token"); 
dynamic result = fb.Get("me", new [] { fields = "id" }); 
var userId = result.id; 

मैं पहुंच टोकन प्राप्त जो मैं मान एप्लिकेशन टोकन है का उपयोग कर userID पाने के लिए कोशिश की है उपयोगकर्ता नहीं टोकन

dynamic result = fb.Get("oauth/access_token", new 
     { 
      client_id = this.ApplicationId, 
      client_secret = this.AppSecret, 
      grant_type = "client_credentials" 
     }); 

fb.AccessToken = result.access_token; 

इसलिए मुझे इस समय इस समय कोई जानकारी नहीं है कि मेरी प्रोफ़ाइल पर पोस्ट कैसे करें

मैं ट्विटर का उपयोग कर उपरोक्त प्राप्त करने में सक्षम हूं जहां मैं गुप्त, टोकन, आईडी इत्यादि का उपयोग कर सकता हूं ... वे प्रदान करते हैं और मैं कर सकता हूं मेरे ट्विटर खाते में लॉग इन किए बिना डेस्कटॉप एप्लिकेशन से सफलतापूर्वक मेरे ट्विटर खाते पर पोस्ट करें।

किसी अन्य उपयोगकर्ता को बिना किसी वास्तविक समस्या के ट्विटर पर पोस्ट करना बहुत आसान लगता है। (facebook c# sdk getting started)

ऐसा लगता है कि मैंने सफलता प्राप्त की है, जिसे मैंने एक ही कोड का उपयोग नहीं किया है - यह कोड जून 2012 में उपयोग किया गया था, इसलिए के बाद से जारी किए गए परिवर्तन तोड़ सकते थे।
मुझे संदेश मिला: (OAuthException - # 2500) वर्तमान उपयोगकर्ता के बारे में जानकारी पूछने के लिए एक सक्रिय एक्सेस टोकन का उपयोग किया जाना चाहिए ... जब मैंने sdk का उपयोग किया था। जब मैंने वेब अनुरोध का उपयोग करके एक्सेस टोकन प्राप्त करने का प्रयास किया और फिर उस टोकन को एसडीके ऑब्जेक्ट में एक फेसबुक क्लाइंट बनाने के लिए पास किया, तो मुझे यह संदेश (OAuthException - # 190) अमान्य OAuth एक्सेस टोकन हस्ताक्षर मिला।

WebRequest request = WebRequest.Create("https://graph.facebook.com/oauth/access_token?  grant_type=client_credentials&client_id=999999999999999&client_secret=edefefr8e09r8e08r080r8er0e"); 

     request.Method = "POST"; 

     // Set the ContentType property of the WebRequest. 
     request.ContentType = "application/x-www-form-urlencoded"; 

     // Get the request stream. 
     Stream dataStream = request.GetRequestStream(); 

     // Close the Stream object. 
     dataStream.Close(); 

     // Get the response. 
     WebResponse response = request.GetResponse(); 
     dataStream = response.GetResponseStream(); 

     // Open the stream using a StreamReader for easy access. 
     StreamReader reader = new StreamReader(dataStream); 

     // Read the content. 
     string accesstoken = reader.ReadToEnd(); 
     MessageBox.Show("accesstoken") 

     // Clean up the streams. 
     reader.Close(); 
     dataStream.Close(); 
     response.Close(); 

     var fb = new FacebookClient(accesstoken); 
     dynamic parameters = new ExpandoObject(); 
     parameters.message = "test"; 
     dynamic result = fb.Post("me/feed", parameters); 
     var id = result.id; 

जाहिर है ऊपर दिए गए कोड में मैंने आईडी और गुप्त को डमी मूल्यों में बदल दिया।

तो मूल रूप से लोग ... उपर्युक्त लिंक और उपरोक्त कोड केवल पिछले कुछ दिनों में मैंने जो आज कोशिश की है उसका एक चुटकी है ... मैं मूल रूप से विकल्पों से बाहर हो गया हूं और यहां कुछ याद आ रहा है जो आसानी से मेरा ध्यान बदलना .. या शायद नहीं :) मैं नहीं जानता।

यदि किसी के पास सी # एसडीके का उपयोग करके या बाकी पोस्टशैप का उपयोग करके या केवल 'POST' विधि के साथ WebRequest ऑब्जेक्ट का उपयोग करके एक साधारण विंडोज़ फॉर्म, या wpf विंडो एप्लिकेशन उदाहरण होगा तो मैं हमेशा के लिए शानदार होगा।

बस फिर से दोहराने के लिए कि यह डेस्कटॉप एप्लिकेशन है और एएसपीनेट नहीं है।

आपके ध्यान और समय के लिए बहुत धन्यवाद लोग।

enter image description here

enter image description here

enter image description here

enter image description here

उत्तर

3

मैं क्या देख सकते हैं कि आपने गलत पहुँच टोकन आपूर्ति कर रहे हैं से। चूंकि आपने एक्सेस टोकन प्राप्त करने के संबंध में कोड प्रदान नहीं किया है, तो क्या मैं सुझाव दे सकता हूं कि आप इस link पर एक नज़र डालें जो बताता है कि एक वेब ब्राउज़र बनाने के तरीके के माध्यम से एक टोकन प्राप्त करने सहित फेसबुक एप्लिकेशन कैसे बनाया जाए।

संपादित करें: आप ऐप एक्सेस टोकन की आपूर्ति कर रहे हैं लेकिन उपयोगकर्ता के रूप में पोस्ट करने का प्रयास कर रहे हैं। इस ऑपरेशन के लिए आपको उपरोक्त लिंक में दिए गए चरणों का पालन करके उपयोगकर्ता पहुंच टोकन की आवश्यकता है जिसे आप प्राप्त कर सकते हैं।

+0

हाय जुर्गन - उत्तर देने के लिए पहली बार समय लेने के लिए बहुत बहुत धन्यवाद। मैंने बस आपके कोड में नमूना आवेदन की कोशिश की और यह पूरी तरह से काम किया। मैं सोच रहा हूं, मैन्युअल लॉगिन को बाईपास करने का कोई तरीका है? और उपयोगकर्ता को टोकन किसी अन्य तरीके से प्राप्त करें? ताकि मैं एक कस्टम विंडो बना सकूं जहां उपयोगकर्ता अपना टेक्स्ट दर्ज कर सकता है और मैन्युअल लॉगिन किए बिना सीधे फेसबुक पर पोस्ट कर सकता है? यह ट्विटर के साथ संभव है, लेकिन अगर यह फेसबुक के साथ संभव है तो मुझे लगता है कि नहीं ... धन्यवाद :) – Kev

+0

दुर्भाग्य से एक्सेस टोकन प्राप्त करने के लिए उपयोगकर्ता को कम से कम एक बार फेसबुक संवाद के माध्यम से लॉगिन करने की आवश्यकता होती है। हालांकि, अगर आप एक्सेस टोकन के बारे में कुछ पढ़ते हैं तो आप सीखेंगे कि एक बार जब आप सामान्य एक्सेस टोकन (2 घंटे की समाप्ति) प्राप्त कर लेते हैं, तो आप एक विस्तारित एक्सेस टोकन का अनुरोध कर सकते हैं जिसमें 60 दिन की समाप्ति हो। टोकन की समयसीमा समाप्त होने से पहले आपको इसे फिर से प्राप्त करने की आवश्यकता होगी। एक्सेस टोकन प्राप्त करने/पुनः प्राप्त करने के लिए उपयोगकर्ता द्वारा तब तक किसी भी कार्रवाई की आवश्यकता नहीं होती है जब तक कि समाप्ति की शर्तों में से कोई एक पूरा नहीं हो जाता है। अधिक जानकारी: https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/ –

+0

मैं सुझाव देता हूं कि हर बार जब उपयोगकर्ता लॉग इन करता है तो अपडेट किए गए टोकन का अनुरोध करें अद्यतन टोकन प्राप्त करने के लिए आप उसी प्रक्रिया का पालन करते हैं जैसे कि आप विस्तारित टोकन का अनुरोध कर रहे हैं। इस तरह मैं इसे करता हूं: 'स्ट्रिंग लांगटोकन = एचटीपीयूटीलिटी.पर्ससेक्स्टस्ट्रिंग (एचटीपीयूटी.जीटीएचटीएमपी पेज ("https://graph.facebook.com/oauth/access_token?client_id=" + APP_ID + "और client_secret =" + APP_SECRET + "और grant_type = fb_exchange_token और fb_exchange_token = "+ SHORT_TOKEN)) [" access_token "];' (अपने स्वयं के साथ स्थिरांक को प्रतिस्थापित करें)। यदि उपयोगकर्ता दो महीने से अधिक समय तक लॉगिन नहीं करता है तो आपको यह सुनिश्चित करना होगा कि उसे फिर से फेसबुक पर लॉगिन करने के लिए कहा जाए। –

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