2012-01-19 17 views
3

Facebookの壁に投稿する方法を検討しています。ページ管理者)。Facebookのページに投稿する方法(ページアクセストークンとユーザーアクセストークンを取得する方法)

は、私がテストしているときにエラーメッセージの範囲を得る: 例外:200:ユーザーは、このアクション

ページの管理者がアプリを訪問し、次の権限を受け入れた実行するアプリケーションを許可していません:publish_streamを、

// Insert Page Administrators ID here 
// This user is not the same user that is currently logged in and using the app 
// This user is the page administrator who has authorised: 
// - manage_pages 
// - offline_access 
// - publish_stream 

$user_id = '123456789'; 

// Insert Page ID here 
$page_id = '123456789'; 

$accounts = $facebook->api('/'.$user_id.'/accounts'); 

foreach($accounts['data'] as $account) 
{ 
    if($account['id'] == $page_id) 
    { 
    $page_access_token = $account['access_token']; 
    echo "<p>Page Access Token: $page_access_token</p>"; 
    } 
} 

// publish to the wall on your page 
try 
{ 
    $result = $facebook->api(array("uid" => $page_id, 
            "method" => "stream.publish", 
            "access_token" => $page_access_token, 
            "message" => $message,)); 
} 
catch (FacebookApiException $e) 
{ 
    error_log('FB Error: Could not post on Page Wall. Page ID: ' . $page_id); 
    error_log('FB Error Message: ' . $e); 
} 

注:ここでは

offline_access manage_pagesは、私が使用する予定のコードで、私はちょうどその場でそれをスプライシングされたが、そのないので、mと、上記のコードでPHPのエラーがあるかもしれません私は訂正する必要があるPHPのエラーをuch、しかし、私はこのプロセスについて行くつもりの私の論理的な理解をより多くの。

問題: ページ管理者用のアクティブなユーザーアクセストークンがないと、$ user_id/accounts情報にアクセスできません。

私が達成しようとしている最終的な結果は次のとおりです。 1)通常のFBユーザーがアプリになり、フォーム 2を提出する)アプリの記事ではありませんFBページの壁にメッセージが、 FBユーザーが所有していましたが、以前はページ管理者によってmanage_pages、publish_stream、およびoffline_accessという権限で承認されています

Q1。ページ管理者は適切なアクセス許可を受け入れているので、実際のページ管理者のユーザーがウェブサイトにログインすることなく、単にアクティブなユーザーアクセストークンを生成することはできません。

Q2。別のユーザーとしてFacebookにログインしたときに、ページ管理者のuser_idの/ $ user_id/accountsに相当するアカウントを取得できる方法はありますか(これは/ me/accountsを使用しない理由です)。

Q3。ページの壁に投稿するためにページアクセストークンが必要であるとの私の理解が正しいことを確認してください(または、ページ管理者のためにユーザーaccess_tokenが必要ですか?Q1を参照)。

4。誰でも、access_tokenの各タイプが実際にアクセスできるものに便利なリソースがありますか?

さらに詳しい情報が必要な場合は、私にお知らせください。 私はこれに取り組んで最後の数日間過ごしたと私は立ち往生しています。

ありがとうございます!

答えて

3
  1. あなたはoffline_accessとともにmanage_pages用ページの管理者に依頼することができます。スケジュールされた投稿をページの壁に投稿できるように、私の制作アプリでこれを行います。

  2. いいえ。ありえない。それがパーミッションを求めることがすべてです。なぜ誰もがほかの人のページを管理することはありません。アクセス権を与えずに誰かのページを管理できるかどうかをイメージできますか?

  3. ページとしてページに投稿するには、ページアクセストークンが必要です。ユーザーとしてページの壁に投稿するには、ユーザーアクセストークンが必要です。

  4. はい、参照してください。https://developers.facebook.com/docs/reference/api/permissionshttps://developers.facebook.com/docs/authentication/

あなたはこれらのいずれかについての質問がある場合は、新しい質問を開始してください。 stackoverflowのユーザーは、4つの質問を1つに打ち負かすと、それぞれの質問にフォローアップの質問をするのは本当に公正ではありません。私はジャンゴで行っている

+0

1.を与えます許可が必要です。 2.私はアクセス許可の必要性を理解していますが、私のアプリはクライアントのFacebookページにインストールされ、ユーザーは新しいアイテムを作成するので、クライアントのFacebookページの壁に投稿したいと思っています。したがって、メッセージを投稿しようとすると、そのアプリケーションを使用しているユーザーはページ管理者ではなく、毎日のユーザーに過ぎません。 – James

+0

3.ページアクセストークンの目的を明確にしてくれてありがとうございます。現在のユーザーのアクセストークンを使用して、ページ管理者が所有するページウォール(管理者が適切なアクセス許可を承認したadmin_pages/offline_access)に投稿できるようになっているように聞こえますが、認証エラーが発生します私のポストを更新してください) 4.私はこれらのページを読んでいて、必要な答えを得ることに何の不運も感じていないようです。 エラーログ:キャッチされていない例外:240:有効なユーザーが指定されている必要があります – James

+0

これらのいずれかについてさらに質問がある場合は、新しい質問を開始してください。 stackoverflowのユーザーは、4つの質問を1つに打ち負かすと、それぞれの質問にフォローアップの質問をするのは本当に公正ではありません。 – DMCS

2

ステップはPage_access_tokenを取得する:

facebook_page_id=360729583957969 
graph = GraphAPI(request.facebook.user.oauth_token.token)      
page_access_token=graph.get(facebook_page_id+'?fields=access_token') 

この方法では、ページのアクセストークンを取得することができます。

あなたはFbにGraphAPIexplorerにこのことを確認することができます。たとえば

http://developers.facebook.com/tools/explorer 
GET URL: fb_page_id?fields=access_token 

を:360729583957969?fields=access_token 私はすでにこの許可を求めるとページの管理者がこれを持っていることを確認することができますあなたのpage_access_token

関連する問題