2016-06-19 1 views
-1

私は単純なWebアプリケーションを作成しようとしています。誰かがアプリケーションにメッセージを投稿すると、その情報が自動的にFacebookページに投稿されます。理想的には、投稿に永久的なトークンを使用します。Facebookページの自動ポスト

私はアプリとページを作成し、アプリの秘密を使ってページアクセストークンを取得しました。

WWW-Authenticate: OAuth "Facebook Platform" "insufficient_scope" "(#200) 
The user hasn't authorized the application to perform this action 

は今、すべての私は、ページ上で公開することをアプリに許可に関するドキュメントで見つけるFBログインによる認可を与えるために、ユーザーが必要です。私はこのトークンを使用してページにメッセージを投稿しようとすると、しかし、私が取得します。私は彼女が何かを投稿しようとするたびに管理者にログインさせたいとは思わない。私は、このアプリにページに投稿する永久的な許可を与えたい。どうしたらいいですか?

答えて

0

私はIRCの人々の助けを借りて方法を見つけました。これは使用できるフローです:

グラフAPIエクスプローラに移動します。上部のドロップダウンからアプリケーションを選択します。下のドロップダウンからページを選択します(ページアクセストークンを生成する)。 [発行ページのリクエスト]オプションを選択します。 アクセストークンをコピーします。今すぐこのトークンをより長期間に交換してください。以下のGETリクエストを発行します。

app_idapp_secret
https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&fb_exchange_token=<your token>&client_id=<app_id>&client_secret=<app_secret> 

は、アプリケーション・ページから入手することができます。

取得したトークンは60日間有効なので、定期的に更新する必要があります。しかし、あなたのページに投稿するために使用することができます。

0

それは、これはあなたがpublish a new post on a linked pageのことができるようにするために必要な範囲を指定しなかったという理由だけで、ユーザー認証のために毎回尋ねる質問ではありません。

publish_pages権限を持つページのアクセストークンそのページに代わって新しい投稿を公開することができます。投稿はページの声に表示されます。

だからあなたはあなたがgetting your access tokensいるときpermsPUBLISH_PAGESを追加する必要があります。

UPDATE

  1. ます(リンクやバックエンドのリダイレクトを経由して)、このURLにユーザーをリダイレクトすることによりget the user permissionへの最初の必要性:このURLで

    https://www.facebook.com/dialog/oauth 
    ?client_id=<YOUR_APP_ID> 
    &redirect_uri=<URL_TO_WHICH_USER_WILL_BE_REDIRECTED_ONCE_HE_CLICKED_OK_OR_CANCEL> 
    &scope=publish_pages 
    
  2. へユーザーがリダイレクトされている場合は、このGETパラメータがあります。

    ?code=<AUTHORIZATION_CODE> 
    
  3. あなたは、このURLを呼び出すことによって、(バックエンドから)トークンを取得するには、この認証コードを使用する必要があります(FYI現在のAPIのバージョンがv2.6です):バックと呼ばれています。この隠されたURLで

    https://graph.facebook.com/<API_VERSION>/oauth/access_token 
    ?client_id=<YOUR_APP_ID> 
    &redirect_uri=<THE_HIDDEN_URL_CALLED_BACK_WITH_JSON_DATA_IN_THE_BODY> 
    &client_secret=<YOUR_APP_SECRET> 
    &code=<AUTHORIZATION_CODE> 
    
  4. 、あなたがそのようになっているはずの体にJSONを取得します:

    { 
        status: 'connected', 
        authResponse: { 
         accessToken: '...', 
         expiresIn:'...', 
         signedRequest:'...', 
         userID:'...' 
        } 
    } 
    
  5. 今、あなたのケースという点で、このユーザに代わってアクションを実行するために(一般的に、データベース内の)このアクセストークンを保存することができます彼のページの壁に投稿を公開しています。


aiohttpはあなたにhow to call these urlshow to retrieve their content上の多くの例を示します。

現実的な例を得るには、Flaskを使用しているthis nice tutorialがありますが、これはaiohttpメソッドで簡単に適応できます。

最後のアドバイス:API管理には使用されていないようだから、初心者の方が簡単なので、Facebook Python SDKを使用することをおすすめします。チュートリアルの豊富なリストそれの使い方。

+0

ええ、どうですか?あなたがリンクしているページ(すでに読んでいます)は、アクセストークンを要求するときにpermを指定する方法を教えていません。 – zefciu

+0

どの言語を使用しますか?どのフレームワークですか? SDKを使用していますか? –

+0

私はPython + aiohttpを使用する予定です。私は、グラフAPIにhttpリクエストを送信するだけでSDKは必要ないと思っていました。出来ますか? – zefciu

関連する問題