3

私は Facebook に非常に慣れていません (ええ、私だけです) が、Python を使用してプログラムでウォールにメッセージを公開したいと考えています。

それを達成するために何をする必要がありますか?私はとても混乱しています。これに関するほとんどの質問は、アプリが Facebook と何らかの方法でやり取りできるようにする方法に焦点を当てていることがわかりましたが、私は単純なユーザー (その特定の Facebook ページを「所有」しているユーザー) であるかのように投稿したいと思います。 )。本当にアプリを作成する必要がありますか? (ちなみに、それでも問題があります... SMSで検証した後でも、アカウントが偽物または無効のように見えると表示されます)。リクエストを使用して資格情報を導入する、より簡単な方法があると思いますが、POST似たようなものは読んでいません。

これが必要だと思っていたのですが、アプリを作成するためのページにつながります。

いくつかのポインタ?

ちなみに、Graph API エクスプローラーの publish_stream パーミッションを介してトークンを取得しました (拡張パーミッション タブを使用)。この許可には有効期限がないようですが、お勧めしません。トークンのより良い選択はありますか?.

ありがとう

4

2 に答える 2

0

Facebook は、他のサイトよりも少しトリッキーです。

Firebug で NET の下の [POST] タブを確認しているときにログインすると、次の POST パラメータが表示されます。

charset_test    €,´,€,´,水,Д,Є
default_persistent  1
email   myusername
lgnjs   1340241652
lgnrnd  182050_CuPx
locale  en_US
lsd AVqwALVx
pass    mypassword
persistent  1
timezone    240

パラメータが何であるかはまだわかりませんlsdが、ログインする前にログインページのソースを表示して、lgnrnd が何であるかを確認しました。認証の自動化をより困難にするためにそこにあるようです。

まず、スクリプトでその値のログイン ページをスクレイピングし、それを変数に格納します。次に、cURL の例は次のようになります。

curl -L "https://www.facebook.com/login.php?login_attempt=1" \
  --cookie-jar /tmp/cookies.txt \
  --data-urlencode "email=myusername" \
  --data-urlencode "lgnrnd=$lgnrnd" \
  --data-urlencode "pass=mypassword"
  and so forth, with all the parameters...

もちろん、これはテストされていません。これらのパラメーター値のいくつかはまだわかりませんが、そこからアイデアを得る必要があります。上記の基本概念を適用するには、おそらく Beautiful Soup などの python モジュールを使用できます。

次に、同じことを行い、[NET] タブを見て、Facebook ウォールに投稿したときに送信されるパラメーターを見つけ、すべてをまとめます。

curl の --cookie-jar オプションを使用して Cookie を保存および使用していることに注意してください。リクエストで Cookie を保存して使用する方法も必要になるため、それを示しました。

とにかく始めるのに役立つことを願っています..

于 2012-06-21T01:39:20.890 に答える
0

これはどうですか?。

import urllib2, urllib
parameters = {}
parameters['access_token'] = MY_TOKEN
parameters['message'] = 'Hello world'
target = 'https://graph.facebook.com/MY_ID/feed'

parameters = urllib.urlencode(parameters)
handler = urllib2.urlopen(target, parameters)
while True:
    if handler.code < 400:
        print handler.read() # Gets post_id
        break
    elif handler.code >= 400:
        print 'Error' # :-(
        break

これに問題はありますか?多分もっと良い方法ですか?コメント?

ありがとう

于 2012-06-21T02:21:24.500 に答える