का उपयोग करने के लिए प्रोग्रामेटिक रूप से एक्सेस टोकन प्राप्त करना मैं फेसबुक ग्राफ एपीआई के साथ खेलने के लिए एक बैश या पायथन स्क्रिप्ट को एक साथ रखने की कोशिश कर रहा हूं। एपीआई का उपयोग करना आसान लग रहा है, लेकिन मुझे अधिकृत करने और access_token को कॉल करने के लिए मेरी बैश स्क्रिप्ट में कर्ल सेट करने में समस्या हो रही है। क्या किसी के पास एक कामकाजी उदाहरण है?फेसबुक ग्राफ एपीआई
उत्तर
कभी भी देर से बेहतर नहीं, शायद अन्य लोग इसे खोज लेंगे। मुझे मैकबुक पर पायथन 2.6 के साथ काम करना पड़ा।
यह
- अजगर फेसबुक मॉड्यूल स्थापित करने की आवश्यकता है: https://github.com/pythonforfacebook/facebook-sdk, की स्थापना की एक वास्तविक फेसबुक ऐप
- और प्रोफाइल आप पोस्ट करना चाहते अनुमति देने के लिए उचित अनुमतियां दी गई है चाहिए करने के लिए पढ़ने और लिखने जैसी सभी अलग-अलग चीजें।
आप फेसबुक डेवलपर दस्तावेज़ों में प्रमाणीकरण सामग्री के बारे में पढ़ सकते हैं। विवरण के लिए https://developers.facebook.com/docs/authentication/ देखें।
इस ब्लॉग पोस्ट भी इस के साथ मदद कर सकता है: http://blog.theunical.com/facebook-integration/5-steps-to-publish-on-a-facebook-wall-using-php/
यहाँ जाता है:
#!/usr/bin/python
# coding: utf-8
import facebook
import urllib
import urlparse
import subprocess
import warnings
# Hide deprecation warnings. The facebook module isn't that up-to-date (facebook.GraphAPIError).
warnings.filterwarnings('ignore', category=DeprecationWarning)
# Parameters of your app and the id of the profile you want to mess with.
FACEBOOK_APP_ID = 'XXXXXXXXXXXXXXX'
FACEBOOK_APP_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
FACEBOOK_PROFILE_ID = 'XXXXXX'
# Trying to get an access token. Very awkward.
oauth_args = dict(client_id = FACEBOOK_APP_ID,
client_secret = FACEBOOK_APP_SECRET,
grant_type = 'client_credentials')
oauth_curl_cmd = ['curl',
'https://graph.facebook.com/oauth/access_token?' + urllib.urlencode(oauth_args)]
oauth_response = subprocess.Popen(oauth_curl_cmd,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE).communicate()[0]
try:
oauth_access_token = urlparse.parse_qs(str(oauth_response))['access_token'][0]
except KeyError:
print('Unable to grab an access token!')
exit()
facebook_graph = facebook.GraphAPI(oauth_access_token)
# Try to post something on the wall.
try:
fb_response = facebook_graph.put_wall_post('Hello from Python', \
profile_id = FACEBOOK_PROFILE_ID)
print fb_response
except facebook.GraphAPIError as e:
print 'Something went wrong:', e.type, e.message
त्रुटि टोकन हो रही बेहतर हो सकता है की जाँच कर, लेकिन आप क्या करना है के विचार मिलता है।
यहां Python Code है। आदेश पंक्ति पर these examples कुछ चलाने का प्रयास करें, वे मेरे लिए ठीक काम करते हैं। यह भी देखें - http://www.pythonforfacebook.com/
आपको पहले set up an application की आवश्यकता है। निम्नलिखित तो पहुंच टोकन थूक से बाहर होगा आपके आवेदन आईडी और गुप्त दिया:
> curl -F type=client_cred -F client_id=[...] -F client_secret=[...] https://graph.facebook.com/oauth/access_token
के बाद से एक वेब ब्राउज़र वास्तविक प्राधिकरण के लिए शामिल किए जाने की जरूरत है, वहाँ एक "स्टैंडअलोन स्क्रिप्ट" कि यह होता है जैसी कोई चीज नहीं है सब। यदि आप केवल एपीआई के साथ खेल रहे हैं, या खुद को स्वचालित करने के लिए एक स्क्रिप्ट लिख रहे हैं, और अपने लिए access_token
चाहते हैं जो समाप्त नहीं होता है, तो आप यहां एक को पकड़ सकते हैं: http://fbrell.com/auth/offline-access-token
धन्यवाद कि बहुत आसान – justinhj
@daaku है इसलिए उपयोगकर्ता के लिए एक समाप्त एक्सेस टोकन को पुन: उत्पन्न करने के लिए मुझे अपने वेब ब्राउज़र को फेसबुक पर रीडायरेक्ट करने की आवश्यकता है (मुझे लगता है कि फेसबुक पहचानने के लिए अपनी स्वयं की कुकीज़ पढ़ सकता है उपभोक्ता)? – Neil
बहिष्कृत, मुझे लगता है कि वे स्वचालित उपकरण की अनुमति नहीं देना चाहते हैं। किसी ऐसे व्यक्ति के रूप में जो उन्हें विकसित करने की ज़रूरत है, केवल प्रमुख वेबसाइटों द्वारा इस कदम को परेशान कर रहा है ... –
ऐसा करने का एक तरीका है, मैंने इसे पाया है, लेकिन यह बहुत काम है और आपको ब्राउज़र को 100% खराब करने की आवश्यकता होगी (और आप उनकी सेवा की शर्तों को तोड़ने की संभावना होगी)
क्षमा करें मैं सभी विवरण प्रदान नहीं कर सकता, लेकिन इसका सारांश:
- मानते हुए कि आपके पास फेसबुक खाते के लिए उपयोगकर्ता नाम/पासवर्ड है, ओथ/प्रमाणीकरण ... पृष्ठ के लिए कर्ल जाएं। "सेट-कुकी" शीर्षलेख में लौटाई गई किसी भी कुकीज को निकालें और फिर किसी भी "स्थान" शीर्षलेख (रास्ते में कुकीज़ संकलित) का पालन करें।
- लॉगिन प्रपत्र स्क्रैप, सभी क्षेत्रों के संरक्षण, और उसे सबमिट करें (संदर्भित और सामग्री प्रकार हेडर स्थापित करने, और अपने ईमेल डालने/पास) (1) की आवश्यकता से ही कुकी संग्रह
- रूप में एक ही (2), लेकिन अब आपको (2) सबमिट किए जाने के बाद प्राप्त स्वीकृति फॉर्म को पोस्ट करने की आवश्यकता होगी, रेफरर हेडर को थ्रू यूआरएल के साथ सेट करें जहां फॉर्म अधिग्रहित किया गया था।
- जब तक यह आप अपनी साइट को वापस भेजता है रिडायरेक्ट का अनुवर्तन और वह URL
- एक्सचेंज OAuth endpoint
मुख्य gotchas कुकी हैं पर एक ACCESS_TOKEN के लिए कोड से बाहर "कोड" पैरामीटर प्राप्त प्रबंधन और रीडायरेक्ट। असल में, आपको ब्राउज़र 100% की नकल करना होगा। मुझे लगता है कि यह हैकरी है लेकिन एक रास्ता है, यह वास्तव में बहुत मुश्किल है!
वाह, सिद्धांत में बहुत अच्छा लगता है, क्या आपने ऐसा कुछ किया है जिसमें पाइथन में ऐसा किया गया है? –
आसान! बस facebook-sdk का उपयोग करें।
get_app_access_token (APP_ID, app_secret) - वास्तव में क्या आप ;-)
अरे, क्या कोड में app_secret को स्टोर करना सुरक्षित है? फेसबुक प्रलेखन स्पष्ट रूप से बताता है "फिर, सुरक्षा के लिए, ऐप एक्सेस टोकन को क्लाइंट-साइड कोड में कभी भी कड़ी-कोडित नहीं किया जाना चाहिए, ऐसा करने से आपके वेबपृष्ठ को लोड करने वाले प्रत्येक व्यक्ति को आपके ऐप रहस्य में पूर्ण पहुंच मिल जाएगी, और इसलिए आपके ऐप को संशोधित करने की क्षमता। " –
नहीं, आपको क्लाइंट साइड कोड में ऐप राइट शामिल नहीं करना चाहिए। लेकिन यहां सवाल इंटरैक्टिव/सर्वर उपयोग का तात्पर्य है, क्लाइंट-साइड कोड नहीं। – s29
यहां आपके द्वारा जाना कर रहे हैं, के रूप में सरल रूप में यह हो सकता है। किसी भी 3 पार्टी एसडीके आदि की आवश्यकता नहीं है
Make sure Python 'requests' module is installed
import requests
def get_fb_token(app_id, app_secret):
payload = {'grant_type': 'client_credentials', 'client_id': app_id, 'client_secret': app_secret}
file = requests.post('https://graph.facebook.com/oauth/access_token?', params = payload)
#print file.text #to test what the FB api responded with
result = file.text.split("=")[1]
#print file.text #to test the TOKEN
return result
'result = file.text.split (" = ") [1] इंडेक्स एरर: रेंज ' – User
से बाहर सूची सूची के रूप में, यह एंडपॉइंट जेएसओएन देता है, इसलिए' result = file.text.split (" = ") [1] 'to' result = file.json() ['access_token'] ' –
- 1. फेसबुक ग्राफ एपीआई + फेसबुक पेज
- 2. फेसबुक ग्राफ एपीआई: जाओ
- 3. फेसबुक ग्राफ एपीआई
- 4. फेसबुक ग्राफ एपीआई
- 5. फेसबुक ग्राफ एपीआई
- 6. फेसबुक ग्राफ एपीआई
- 7. फेसबुक ग्राफ एपीआई
- 8. फेसबुक ग्राफ एपीआई
- 9. फेसबुक ग्राफ एपीआई
- 10. फेसबुक ग्राफ एपीआई: स्थान
- 11. फेसबुक ग्राफ एपीआई
- 12. फेसबुक ग्राफ एपीआई
- 13. फेसबुक ग्राफ एपीआई
- 14. फेसबुक ग्राफ एपीआई
- 15. फेसबुक ग्राफ एपीआई
- 16. फेसबुक ग्राफ एपीआई
- 17. फेसबुक ओपन ग्राफ एपीआई
- 18. फेसबुक - ग्राफ एपीआई
- 19. फेसबुक ग्राफ एपीआई झूठी
- 20. फेसबुक ग्राफ एपीआई - फेसबुक पेज यूआरएल
- 21. फेसबुक ग्राफ एपीआई पेज खातों
- 22. फेसबुक ग्राफ एपीआई: उपयोगकर्ता लिंग
- 23. फेसबुक ग्राफ एपीआई और PHP
- 24. फेसबुक ग्राफ एपीआई समूह फ़ाइलें
- 25. फेसबुक ग्राफ एपीआई - खोज घटना
- 26. फेसबुक ग्राफ एपीआई कोई ईमेल
- 27. फेसबुक ग्राफ एपीआई: ऑडियो शेयर
- 28. फेसबुक ग्राफ एपीआई इवेंट पिक्चर
- 29. ग्राफ एपीआई
- 30. फेसबुक ग्राफ एपीआई - मुझे एक खाली सेट
कौन सा पायथन फेसबुक मॉड्यूल? वहां कई हैं। :/ –
आधिकारिक एक! आप इसे गिटहब से प्राप्त कर सकते हैं: https://github.com/facebook/python-sdk मैंने लिंक को शामिल करने के लिए उत्तर अपडेट किया। – maryisdead
धन्यवाद, हालांकि "यह एसडीके बहिष्कृत है।" –