3

毎日のステータスをページ ウォールに投稿するアプリケーションがあります。ステータスはアプリケーションとして投稿されます ( http://facebook.com/fragrantheartを参照)。私のアプリは「Fragrant Heart Daily Meditations」で、ご覧のとおり、何年も前からとても楽しく投稿しています。ただし、投稿すると、次のエラーが表示されます。

 [message] => An unknown error has occurred.
 [type] => OAuthException
 [code] => 1

これがサーバー(PHP API)で実行される私のコードです:

$facebook = new Facebook(array('appId'=>'148279321865482', 'secret'=>'XXXXXX', 'cookie'=>false));
$target_id = '124924677541618'; // Fragrant Heart Meditation Page
$facebook->api("/{$target_id}/feed", 'POST', array('message'=>$msg));

私が読んだことから、ページがアプリに publish_stream 権限を付与しているため、access_token は必要ありません。

このエラーの原因となる最近の変更は何ですか? コードは変更されていません。

また、アクセス トークンを取得するためにサーバー側の認証フローを試しました。そのトークンをデバッガーで実行すると、次のようになります。

App ID:  148279321865482 : Fragrant Heart Daily Meditations
User ID: 100001170589484 : Elisabeth Blaikie
Issued:  1289470487 (over a year ago)
Expires: Never
Valid:   True
Origin:  Web
Scopes:  create_note manage_pages offline_access photo_upload publish_actions publish_stream share_item status_update video_upload

ただし、次のようなアクセス トークンを使用する場合: (明らかに、YYYYYY は実際のトークンに置き換えられます):

$facebook = new Facebook(array('appId'=>'148279321865482', 'secret'=>'XXXXXX', 'cookie'=>false));
$target_id = '124924677541618'; // Fragrant Heart Meditation Page
$facebook->api("/{$target_id}/feed", 'POST', array('message'=>$msg, 'access_token'=>'YYYYYYY'));

エラーが発生します:

[message] => Invalid OAuth access token.
[type] => OAuthException
[code] => 190

ご協力いただきありがとうございます。

4

1 に答える 1

3

ハハ - つまり、元の問題は実際には access_token が見つからないことでした。ただし、コードに access_code を貼り付けたときに、アクセス キーを誤ってコピーしていました。したがって、「無効な OAuth アクセス トークン」です。ドー!

したがって、同じ状況 (PHP サーバーから自分のページに自動的に投稿する) にいる他の人にとって、正しいコードは次のとおりです。

$facebook = new Facebook(array('appId'=>'YOUR APP ID', 'secret'=>'YOUR APP SECRET', 'cookie'=>false));
$target_id = 'YOUR PAGE ID'; 
$facebook->api("/{$target_id}/feed", 'POST', array('message'=>'YOUR MESSAGE', 'access_token'=>'YYYYYYY'));

パーマネント アクセス トークンを取得するには、http://developers.facebook.com/docs/authentication/server-side/の手順、特に手順 1 と 4に従います。

投稿先のページの所有者としてサインインします。に行く

https://www.facebook.com/dialog/oauth?
    client_id=YOUR_APP_ID
   &redirect_uri=YOUR_REDIRECT_URI
   &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES
   &state=SOME_ARBITRARY_BUT_UNIQUE_STRING

COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES はpublish_streamである必要があり、必要なその他のパーマも必要です。YOUR_REDIRECT_URI (アプリ設定と同じドメインである必要があります) にリダイレクトされるリクエストを受け入れます。リダイレクト URI から CODE をコピーして、

https://graph.facebook.com/oauth/access_token?
    client_id=YOUR_APP_ID
   &redirect_uri=YOUR_REDIRECT_URI
   &client_secret=YOUR_APP_SECRET
   &code=CODE_GENERATED_BY_FACEBOOK

アクセス トークンは、ページの本文にあります。

于 2012-10-12T20:37:53.510 に答える