2011-05-27 11 views
1

私は制御しているFacebookのアプリケーションの壁に自動的に投稿を書きたいと思うアプリエンジンのウェブアプリを持っています(つまり、Facebookのアプリケーションの壁を更新したいウェブサイトで特定のイベントが発生するたびに)。pythonを使って、アプリケーションエンジンの壁に投稿する方法を教えてください。

このコードは、サーバー上の遅延タスクから呼び出されます。

私はこれに対処する何かを見つけることができませんでした。あなたの助けに感謝します。

https://graph.facebook.com/oauth/access_token?client_id=FACEBOOK_APP_ID&client_secret=FACEBOOK_APP_SECRET&grant_type=client_credentials&scope=manage_pages,offline_access 

返されたアクセストークンを使用して、これは私がサーバー上で実行しているものです::

form_fields = { 
    "access_token": FACEBOOK_ACCESS_TOKEN, 
    "message": tgText 
    }; 

form_data = urllib.urlencode(form_fields) 
result = urlfetch.fetch(url="https://graph.facebook.com/MYAPP_FACEBOOK_ID/feed", 
         payload=form_data, 
         method=urlfetch.POST, 
         validate_certificate=False, 
         headers={'Content-Type': 'application/x-www-form-urlencoded'}) 

でも呼び出し、私がやった

まず最初は、次のコードで私のアクセストークンを取得しましたこの結果は次のようになります。

{"error":{"type":"OAuthException","message":"(#200) The user hasn't authorized the application to perform this action"}} 

答えて

3

管理者は、第三者のアプリケーション

http://developers.facebook.com/docs/authentication/(セクションページログイン

:あなたのアプリケーションのプロフィールページ(http://www.facebook.com/apps/application.php?id=YOUR_APP_ID)のOAuthを使って上に投稿するウルのpythonアプリ)

あなたはアクセスを受けたら、あなたはここで説明するようにアプリのプロフィールページに投稿することができるはずトークン:

http://developers.facebook.com/docs/reference/api/post/(セクションの公開)

+0

私はあなたのフィードバックに基づいて質問を更新しましたが、私はまだそれを動作させることはできません - 何らかの理由で私のコードが承認されたものとして認識しません。 –

+0

アクセストークンを取得するために間違ったURLを使用しています。私の回答で指摘されているように、認証フローのセクション「ページログイン」をチェックしてください。そのセクションのアクセストークンURLには、 "scope = manage_pages"が含まれています。これは基本的に、あなたが管理者であるすべてのFacebookページにあなたのアプリケーションへのアクセスを許可します。その後、ページに直接投稿します(フィードURLのアプリIDではなくページIDを使用します)。もちろん、これはまずあなたのアプリのFacebookページを作成する必要があります。 – fivanski

+0

実際、最後の部分は間違っています。すべてのアプリが既にページを持っていることが分かりました。作成する必要はなく、同じIDを使用できます。したがって、単にアクセストークンURLを置き換えてみてください。それがうまくいけば私たちに知らせてください。私はそれに応じて答えを更新します。 – fivanski

0

私は同様のアプリを持っています。 Facebookは、アクセストークンを取得するプロセスの一環として送信するコードを変更することができます。私は、ユーザーにアプリを承認させるためにFacebookに必要なデータを含む非表示の入力フィールドを持つフォームを作成する簡単なWebページを作成しました(http://developers.facebook.com/docs/reference/dialogs/oauth/参照)。

ユーザーが送信ボタンをクリックすると、ブラウザは適切なクエリ文字列を使用してFacebookにHTTP GETを行い、Facebookユーザーはログインして(必要な場合)、アプリケーションを認証するよう促されます。 Facebookが承認した場合、redirect_urlが「アクセストークンを与える」フローの一部として必要なときに取得するためにデータストアに保存できるコードで呼び出されます。

+0

残念ながら、私はブラウザからではなくサーバーからの投稿をしようとしているので、これは役に立ちません(つまり、ユーザーはウェブサーバーです) –

関連する問題