I am trying to put together a bash or python script to play with the facebook graph API. Using the API looks simple, but I'm having trouble setting up curl in my bash script to call authorize and access_token. Does anyone have a working example?
Better late than never, maybe others searching for that will find it. I got it working with Python 2.6 on a MacBook.
This requires you to have
You can read about the authentication stuff in the Facebook developer documentation. See https://developers.facebook.com/docs/authentication/ for details.
This blog post might also help with this: 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() try: oauth_access_token = urlparse.parse_qs(str(oauth_response))['access_token'] 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
Error checking on getting the token might be better but you get the idea of what to do.