2011-04-01 18 views
6

मैंने अपने रेल ऐप के लिए एक फेसबुक प्रशंसक बनाया है, और मैं रेल ऐप से उस फेसबुक प्रशंसक की दीवार पर डेटा पोस्ट करने में सक्षम होना चाहता हूं।फेसबुक पर पोस्ट करें फैन पेज वॉल से रेल

वेब के आस-पास खुदाई के बाद, मैंने पाया है कि मैं वास्तव में बहुत सारी शब्दावली से उलझन में हूं। fb_graph gem समेत मुझे मिले अधिकांश समाधान ACCESS_TOKEN के लिए पूछ रहे हैं, जो एक APP_SECRET और APP_ID को पुनः प्राप्त करता है। मुझे पृष्ठ की आईडी मिल सकती है लेकिन मुझे नहीं लगता कि मैं केवल एक सामान्य fanpage के लिए APP_SECRET प्राप्त कर सकता हूं।

मणि दस्तावेज़ कहते हैं मैं सिर्फ एक फ़ीड की पोस्ट करने के लिए इस स्निपेट का उपयोग कर सकते हैं:

me = FbGraph::User.me(ACCESS_TOKEN) 
me.feed!(
    :message => 'Updating via FbGraph', 
    :picture => 'https://graph.facebook.com/matake/picture', 
    :link => 'http://github.com/nov/fb_graph', 
    :name => 'FbGraph', 
    :description => 'A Ruby wrapper for Facebook Graph API' 
) 

कौन महान है, सिवाय इसके कि मैं अगर मैं APP_SECRET और APP_ID के बिना एक ACCESS_TOKEN प्राप्त कर सकते हैं पता नहीं है।

क्या मुझे एक फेसबुक ऐप बनाने की ज़रूरत है? (जो मुझे लगता है कि सामान्य प्रशंसक पृष्ठ से अलग है ...) मैं चाहता हूं कि उपयोगकर्ता पृष्ठ को "पसंद" कर सकें ताकि मेरे समाचार फ़ीड में जो चीजें पोस्ट हों, वे भी उनके समाचार फ़ीड में दिखाई देंगी।

यह केवल एक पृष्ठ है मैं सोच भी नहीं मैं OAuth के माध्यम से उपयोगकर्ताओं को प्रमाणित करने की आवश्यकता है ... मैं नहीं चाहता कि उन्हें को पोस्ट करने के लिए पेज की दीवार, बस पृष्ठ पर पोस्ट चाहते हैं पर यह खुद है दीवार। लेकिन मैं इसे स्वचालित होना चाहता हूं।

मैं यह कैसे कर सकता हूं?

उत्तर

2

संक्षिप्त उत्तर यह है कि हां, आपको एक फेसबुक ऐप की आवश्यकता होगी। इस जवाब के अंत में चेतावनी देखें।

फेसबुक के साथ सभी बाहरी इंटरैक्शन उपयोगकर्ता के माध्यम से टोकन के उपयोग के माध्यम से होता है, जैसा आपने पाया है। एक उपयोगकर्ता के लिए एक पहुंच टोकन प्राप्त करने के लिए, एक आवेदन अपने आवेदन पत्र के आधार पर एक विशेष URL उपयोगकर्ता को चाहिए एप्लिकेशन आईडी और अनुप्रयोग गुप्त है, जो जहां वे अनुमतियाँ संवाद प्रस्तुत किया जाएगा:

Facebook Connect http://s3.amazonaws.com/files.posterous.com/mockupstogo/AIcVc2qmfB9qDwOBuQp4vdylKkM2wZiWhjQezBjTO1L0qym0agkSWQFNNobe/Facebook_Connect.png?AWSAccessKeyId=AKIAJFZAE65UYRT34AOQ&Expires=1301690929&Signature=cwibcaeH6GGbVA3gC2AAyvcEco0%3D

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

चूंकि आप केवल अपना खाता/ऐप दीवार पर पोस्ट करने में सक्षम होना चाहते हैं, इसलिए एक अच्छा विचार स्थायी पहुंच टोकन प्राप्त करना होगा और आपके ऐप में कहीं भी टोकन स्टोर करना होगा। जबकि ओएथ 2 गैर-वेब-अनुप्रयोगों के लिए "उपयोगकर्ता-एजेंट प्रवाह" का समर्थन करता है, फेसबुक सीधे इसका समर्थन नहीं करता है। अधिक के लिए https://developers.facebook.com/docs/authentication/ के "डेस्कटॉप ऐप्स" अनुभाग देखें।

7

हां, एक्सेस टोकन प्राप्त करने के लिए, आपको client_id और client_secret की आवश्यकता है। एक बार जब आप उन्हें प्राप्त कर लेंगे, तो यह नमूना ऐप आपको स्वयं का एक टोकन देगा। (config_ facebook.yml में क्लाइंट_आईडी, क्लाइंट_सेक्रेट और अनुमतियां संपादित करें।आप इस कोड के साथ स्वयं पृष्ठ के रूप में एक संदेश पोस्ट कर सकते हैं fb_graph के मामले में कम से कम "manage_pages" अनुमति)

https://github.com/nov/fb_graph_sample

की आवश्यकता होगी।

 
owner = FbGraph::User.me(USER_ACCESS_TOKEN) 
pages = owner.accounts 
page = pages.detect do |page| 
    page.identifier == '117513961602338' 
end 
page.feed!(:message => 'test') 

आप भविष्य में उपयोग के लिए page.access_token स्टोर कर सकते हैं आप पहले से ही पेज पहुँच टोकन है, तो आप बस इस तरह कह सकते हैं।

 
page = FbGraph::Page.new(PAGE_ID, :access_token => PAGE_ACCESS_TOKEN) 
page.feed!(:message => 'test') 

ps। me.feed!(...) पृष्ठ के स्वामी के रूप में पोस्ट पेज के रूप में नहीं।

+0

तो यह नियंत्रक की कार्यवाही में जाएगा? और आप पहुंच टोकन कैसे प्राप्त करते हैं? – rugbert

+0

नियंत्रक में हो सकता है, मैं इसे मॉडल में पसंद करता हूं। –

+0

access_token "owner.accounts" कॉल की प्रतिक्रिया में शामिल है। –

1

मुझे वास्तव में gem nov matake बनाया गया है, और मुझे लगता है कि मैं वहां दूसरों के बजाय इसका उपयोग करने के लिए स्विच करूंगा। मुझे उस उत्तर पर थोड़ा विस्तार करने की कोशिश करें।

फेसबुक प्रलेखन अच्छा है, लेकिन मुझे लगता है कि यह अभी भी लेखन के समय बहुत सारे छेद छोड़ देता है।

मुझे पता चला है कि यदि आप पृष्ठ की तरफ से एक पृष्ठ पर दीवार पोस्ट करना चाहते हैं तो ऐप का उपयोग करके, कि तीन अनुमतियां आवश्यक हैं।

  • अनुरोध "ऑफ़लाइन पहुँच" अनुमति

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_APP_URL&scope=offline_access&response_type=token

ऑफ़लाइन उपयोग के बिना, अपने टोकन समाप्त हो जाएगा और अपने अनुप्रयोग पूरे प्रमाणीकरण प्रक्रिया को समय-समय का पालन करना होगा। उपरोक्त यूआरएल का उपयोग करके, आपको प्रक्रिया को किक-स्टार्ट करने के लिए एक गैर-समाप्ति टोकन प्रदान किया जाएगा।

  • अनुरोध "धारा प्रकाशित" अनुमति

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_APP_URL&scope=publish_stream&response_type=token

मैं इस अनुमति के बिना सब पर पेज पर पोस्ट करने में असमर्थ था।

  • अनुरोध "पृष्ठों प्रबंधित करें" अनुमति

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_APP_URL&scope=manage_pages&response_type=token

प्रबंधन पृष्ठों अनुमति के बिना, मैं पृष्ठ पर दीवार पोस्टिंग कराने में सफल रहा है, लेकिन वे मूल रूप में दिखाई मेरे व्यक्तिगत खाते से और पृष्ठ की तरफ से नहीं।

उपर्युक्त सभी अनुमतियां आपके खाते में मैन्युअल रूप से दी जानी चाहिए। उस अनुमति प्रक्रिया के बाद, मैं fb_graph gem और ऑफ़लाइन_एसीएएस अनुमति चरणों से उत्पादित कालातीत टोकन का उपयोग करके नव मैकके द्वारा उल्लिखित चरणों का उपयोग करने में सक्षम था।

1
:picture => 'https://graph.facebook.com/matake/picture', 
  • गलत है क्योंकि अगर पिकअप अपने डोमेन में होस्ट किए
  • ऐड ओग फेसबुक जाँच कर रहा है है: अपने पृष्ठ

    <meta property="og:title" content="App.Name title"/> 
    <meta property="og:type" content="website"/> 
    <meta property="og:image" content="YOUR_URL/images/image.png"/> 
    <meta property="og:site_name" content="App.Name"/> 
    <meta property="og:url" content="YOUR_URL"/> 
    <meta property="og:description" content="description"/> 
    
  • में मेटा टैग भी उपयोग the facebook debugger

2

यदि आप आर एप्लिकेशन पहले ही ट्विटर पर अपडेट पोस्ट करता है, आप अपने फेसबुक प्रशंसक पृष्ठ की दीवार पर स्वचालित रूप से उन ट्वीट्स को पोस्ट करने के लिए ट्विटर का उपयोग कर सकते हैं। निम्नलिखित ट्विटर समर्थन आलेख बताते हैं कि अपने खातों को कैसे लिंक करें: https://support.twitter.com/articles/31113

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