Facebook graph APIで遊ぶためにbashまたはpythonスクリプトを組み立てようとしています。APIの使用は簡単に見えますが、bashスクリプトでcurlをセットアップして認証を呼び出すのに問題がありますとaccess_token。誰かが実際の例を持っていますか?
2018-08-23を更新
これはまだいくつかのビューと賛成を得ているので、メンテナンスされたサードパーティSDKが存在するようになったことに言及したいだけです: https://github.com/mobolic/facebook-sdk
絶対に遅れるよりも、それを探している人が見つかるかもしれません。 MacBookでPython 2.6で動作するようにしました。
これはあなたが持っている必要があります
Facebook開発者向けドキュメントで認証に関する情報を読むことができます。詳細については、 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
トークンを取得する際のエラーチェックの方が良いかもしれませんが、何をすべきかのアイデアは得られます。
ここで、できるだけ簡単に進みます。サードパーティのSDKなどは必要ありません。
Python 'requests'モジュールがインストールされていることを確認してください
import requests
def get_fb_token(app_id, app_secret):
url = 'https://graph.facebook.com/oauth/access_token'
payload = {
'grant_type': 'client_credentials',
'client_id': app_id,
'client_secret': app_secret
}
response = requests.post(url, params=payload)
return response.json()['access_token']
簡単! facebook-sdk を使用してください。
import facebook
app_id = 'YOUR_APP_ID'
app_secret = 'YOUR_APP_SECRET'
graph = facebook.GraphAPI()
# exactly what you're after ;-)
access_token = graph.get_app_access_token(app_id, app_secret)
最初に アプリケーションのセットアップ を行う必要があります。次に、アプリケーションIDとシークレットが指定されたアクセストークンを吐き出します。
> curl -F type=client_cred -F client_id=[...] -F client_secret=[...] https://graph.facebook.com/oauth/access_token
そこにISそれを行う方法、私はそれを見つけましたが、それは多くの作業であり、ブラウザを100%偽装する必要があります(そして、あなたはおそらく彼らの条件を破るでしょうサービス)
申し訳ありませんが、すべての詳細を提供することはできませんが、その要点:
主な落とし穴は、Cookieの管理とリダイレクトです。基本的に、ブラウザを100%模倣する必要があります。ハッカーだと思いますが、方法はありますが、本当に難しいです!
Webブラウザは実際の承認に関与する必要があるため、すべてを実行する「スタンドアロンスクリプト」のようなものはありません。 APIで遊んでいるだけの場合、または自分で何かを自動化するスクリプトを記述していて、access_token
有効期限が切れていない自分の場合は、ここで入手できます。 http://fbrell.com/auth/offline-access-token
s29には正しい答えがありますが、解決するための手順がいくつか残っています。次のスクリプトは、Facebook SDKを使用してアクセストークンを取得するための作業スクリプトを示しています。
__requires__ = ['facebook-sdk']
import os
import facebook
def get_app_access_token():
client = facebook.GraphAPI()
return client.get_app_access_token(
os.environ['FACEBOOK_APP_ID'],
os.environ['FACEBOOK_APP_SECRET'],
)
__== '__main__' and print(get_app_access_token())
このスクリプトは、FACEBOOK_APP_IDおよびFACEBOOK_APP_SECRET環境変数がアプリの値に設定されることを想定しています。別のソースからこれらの値をロードするために、その手法を自由に適用してください。
最初に Facebook SDKをインストール (pip install facebook-sdk; python get-token.py
)または rwt などの別のツールを使用してスクリプトを呼び出します(rwt -- get-token.py
)。
Pythonコード です。コマンドラインで これらの例 のいくつかを実行してみてください。うまく動作します。参照してください— http://www.pythonforfacebook.com/