J'essaie de mettre en place un script bash ou python pour jouer avec l'API graphique facebook. L'utilisation de l'API semble simple, mais j'ai du mal à configurer curl dans mon script bash pour appeler authorize et access_token. Quelqu'un at-il un exemple de travail?
Réponses
Trop de publicités?Mieux vaut tard que jamais, peut-être d'autres à la recherche pour que trouverez. Je l'ai eu à travailler avec la version 2.6 de Python sur un MacBook.
Cela vous oblige à avoir
- le Python facebook module installé: https://github.com/pythonforfacebook/facebook-sdk,
- une réelle Facebook app configurer
- et le profil que vous voulez publier devez accordé des autorisations appropriées pour permettre à toutes les différentes choses comme la lecture et l'écriture.
Vous pouvez lire à propos de l'authentification des trucs dans le Facebook de la documentation du développeur. Voir https://developers.facebook.com/docs/authentication/ pour plus de détails.
Ce blog peut aussi aider avec ceci: http://blog.theunical.com/facebook-integration/5-steps-to-publish-on-a-facebook-wall-using-php/
Va ici:
#!/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
La vérification des erreurs sur le jeton peut être mieux, mais vous obtenez l'idée de quoi faire.
Facile! Utilisez simplement facebook-sdk .
get_app_access_token (app_id, app_secret) - exactement ce que vous recherchez ;-)
Vous devez d'abord configurer une application . Les éléments suivants cracheront ensuite un jeton d'accès en fonction de votre ID d'application et de votre secret:
> curl -F type=client_cred -F client_id=[...] -F client_secret=[...] https://graph.facebook.com/oauth/access_token
Puisqu'un navigateur Web doit être impliqué pour l'autorisation réelle, il n'existe pas de "script autonome" qui fait tout. Si vous jouez simplement avec l'API, ou si vous écrivez un script pour automatiser quelque chose vous-même, et que vous voulez un access_token
pour vous qui n'expire pas, vous pouvez en saisir un ici: http://fbrell.com / auth / token d'accès hors ligne
Il y a un moyen de le faire, je l'ai trouvé, mais c'est beaucoup de travail et nécessite d'usurper l'identité d'un navigateur 100% (et vous aurez probablement être la rupture de leurs conditions de service)
Désolé je ne peux pas fournir tous les détails, mais l'essentiel, c':
- en supposant que vous avez un nom d'utilisateur/mot de passe pour un facebook compte, allez curl pour oauth/authentifier... page. Extrait des cookies retourné dans le "Set-Cookie" en-tête, puis suivre les "Emplacement" en-têtes (compilation des cookies sur le chemin).
- gratter le formulaire de connexion, la préservation de tous les champs, et de le soumettre (réglage de l'referer et en-têtes content-type, et l'insertion de votre e-mail/pass) même collection cookie à partir de (1) requis
- même que (2) mais maintenant, vous allez avoir besoin de POSTER le formulaire d'approbation acquis après (2) a été présenté, définissez l'en-tête Referer avec thr URL à laquelle le formulaire a été acquis.
- suivre les redirections jusqu'à ce qu'il vous envoie vers votre site, et obtenir le "code" paramètre de l'URL
- Change le code d'une access_token à l'extrémité oauth
Les principaux problèmes sont la gestion des cookies et de redirections. Fondamentalement, vous DEVEZ imiter un navigateur 100%. Je pense que c'est hackery mais il y a un moyen, c'est vraiment dur!