7

自分のFacebookページにメッセージを投稿する必要があります。プログラムで行う必要があります(私の場合はPythonを使用しています)。私はこのコードを使用してこの部分を実行することができました(Pythonで):

import urllib, urllib2

access_token='XXXX'
fb_page_id='YYYY' # my page ID

post_data = {'access_token':access_token, 'message':'hey this is a test!'}
request_path = str(fb_page_id)+'/feed'
post_data = urllib.urlencode(post_data)
response = urllib2.urlopen(
    'https://graph.facebook.com/%s' % request_path, post_data
)

FBページで生成された投稿のIDが正しく返されます。

In [11]: response.readlines()
Out[11]: ['{"id":"135386143198208_461964357207050"}']

問題:

access_token上記のAPIリクエストを生成して作成するには、ここで詳しく説明する3つの手順を手動で実行する必要がありました。

ただし、実際には、このタスクをcronジョブから実行する必要があるため、この手動プロセスは受け入れられません。access_tokenしたがって、Facebookは一時的なものであるため、自動化する必要があります。つまり、このスクリプトを実行するたびにアクセストークンを取得する必要があります。どうやってするか?

関係する手順を伝える限り、回答にスクリプトツール(curl、JavaScript、Java、PHP)を自由に使用してください。サーバー側の言語(Python / Ruby / PHP)を使用してこれを行う必要があることに注意してください。

4

4 に答える 4

4

プログラムで短期間のトークンを取得することはできません。これは、ユーザーとの対話の目的を無効にします。

Facebookは、ユーザーがインストールするアプリを完全に手動で制御できるようにするために、意図的にこの方法を採用しています。

ユーザーが初期アクセスを許可すると、最大2か月間(または、ユーザーがパスワードを変更するなどしてトークンを無効にした場合はそれ以前)、プロセスを自動化できます。

にHTTPリクエストを行うことによって

https://graph.facebook.com/oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id=APP_ID&
    client_secret=APP_SECRET&
    fb_exchange_token=SHORT_LIVED_ACCESS_TOKEN 

この2か月が経過した後、ユーザーは、上記のコードを使用して再拡張できる新しい短期間のトークンを提供するアプリケーションへのアクセスを再許可するユーザーである必要があります。

于 2013-03-26T17:41:23.737 に答える
4

(ユーザー)アクセストークンを拡張すると、実際にはまったく有効期限が切れない(ページ)アクセストークンを要求できます。

次のドキュメントの「ページアクセストークンの拡張」セクションを参照してください:https ://developers.facebook.com/docs/howtos/login/extending-tokens/

于 2013-03-26T22:43:18.673 に答える
2

このコードを書いた魂を祝福してください。私ではありませんが、どこかで見つけました。スムーズに動作します。メールアドレスとパスワードを使用してこの関数を呼び出します。

MOBILE_USER_AGENT = "Mozilla/5.0 (Linux; U; en-gb; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.16 Safari/535.19"
FB_AUTH = "https://www.facebook.com/v2.6/dialog/oauth?redirect_uri=fb464891386855067%3A%2F%2Fauthorize%2F&display=touch&state=%7B%22challenge%22%3A%22IUUkEUqIGud332lfu%252BMJhxL4Wlc%253D%22%2C%220_auth_logger_id%22%3A%2230F06532-A1B9-4B10-BB28-B29956C71AB1%22%2C%22com.facebook.sdk_client_state%22%3Atrue%2C%223_method%22%3A%22sfvc_auth%22%7D&scope=user_birthday%2Cuser_photos%2Cuser_education_history%2Cemail%2Cuser_relationship_details%2Cuser_friends%2Cuser_work_history%2Cuser_likes&response_type=token%2Csigned_request&default_audience=friends&return_scopes=true&auth_type=rerequest&client_id=464891386855067&ret=login&sdk=ios&logger_id=30F06532-A1B9-4B10-BB28-B29956C71AB1&ext=1470840777&hash=AeZqkIcf-NEW6vBd"

def get_access_token(email, password):
    s = robobrowser.RoboBrowser(user_agent=MOBILE_USER_AGENT, parser="lxml")
    s.open(FB_AUTH)
    ##submit login form##
    f = s.get_form()
    f["pass"] = password
    f["email"] = email
    s.submit_form(f)
    ##click the 'ok' button on the dialog informing you that you have already authenticated with the Tinder app##
    f = s.get_form()
    s.submit_form(f, submit=f.submit_fields['__CONFIRM__'])
    ##get access token from the html response##
    access_token = re.search(r"access_token=([\w\d]+)", s.response.content.decode()).groups()[0]
    #print  s.response.content.decode()
    return access_token
于 2017-08-01T13:24:10.240 に答える
0

プログラムで通常のユーザーのFacebookトークンを取得するには、次のことに興味があるかもしれません:https ://github.com/fbessez/Tinder/blob/master/fb_auth_token.py 、これは、電子メールが提供されたときにトークンを自動的に取得するPythonスクリプトです。 /パスワード。

lxmlこれらは前提条件であるため、がインストールされrequestsていることを確認してください。robobrowser両方ともrequestsrobobrowserランニングで簡単に取得できます

pip install robobrowser

pip install requests

lxmlは、(最新バージョンにするために)コンパイルする必要があるため、「少し」トリッキーです。このSOに従ってください:Ubuntuにlxmlをインストールする方法

于 2017-03-08T21:32:21.030 に答える