質問

特定のイベントが発生したときにアプリからユーザーにメッセージを送信しようとしています。今、私はこのコードを持っています

$param = array(
   'message'      => 'XYZ shared a file with you',
   'data'         => 'additiona_string_data',
   'access_token' => $facebook->getAccessToken(),
);
$tmp = $facebook->api("/$uid/apprequests", "POST", $param);

しかし、私はいつも得ます Uncaught OAuthException: (#2) Failed to create any app request thrown

どこに問題があるのか​​分かりません。

役に立ちましたか?

解決

リクエストのドキュメントを読む必要があります。
には、2 つの異なるタイプのリクエストについての説明があります。

必要なのは、 アプリが生成したリクエスト, つまり、ユーザーではなくアプリのアクセス トークンが必要になります。

コードサンプルに Facebook オブジェクトの開始が含まれておらず、おそらくすでにユーザーを検証しているため、ユーザーアクセストークンを使用していると思います。 getAccessToken() この呼び出しは、アプリケーションのアクセス トークンではなく、ユーザーのアクセス トークンを返します。

他のヒント

「特定のイベントが発生したときにアプリからユーザーにメッセージを送信しようとしています。」については少し混乱しています。今、私はこのコードを持っています」という意味です。

  1. 誰かがウォールに投稿したときにユーザーにメールを送信する

  2. イベント招待状をユーザーに送信する

  3. アプリの招待をユーザーに送信する

  4. 「XYZ があなたとファイルを共有しました」などの何かが起こったときにユーザーのウォールに書き込みます。

答える

  1. 必要です email そして read_stream ユーザーの権限。リアルタイム更新を使用して彼の壁を監視し、サーバーの SMTP を使用して電子メールを送信します。

  2. 見る http://developers.facebook.com/docs/reference/api/event/#invited イベント招待状の作成方法について

  3. @Lixが指摘したように、を参照してください。 https://developers.facebook.com/docs/channels/#requests

  4. これは、新しい Open Graph オブジェクト/アクションを使用して実行する必要があります。この例を参照してください。 https://developers.facebook.com/docs/beta/opengraph/tutorial/

Facebook アプリのアクセス トークンは、次の方法で受け取ることができます。

https://graph.facebook.com/oauth/access_token?client_id=FB_APP_ID&client_secret=FB_APP_SECRET&grant_type=client_credentials

Facebook PHP SDK を使用してアプリからユーザーへのリクエストを投稿するための動作するコード サンプル (必要に応じてエラー処理を追加):

$facebook = new Facebook(array(
  'appId'  => FB_APP_ID,
  'secret' => FB_APP_SECRET,
));

$token_url = "https://graph.facebook.com/oauth/access_token?" ."client_id=" . 
   FB_APP_ID ."&client_secret=" . FB_APP_SECRET ."&grant_type=client_credentials";

$result = file_get_contents($token_url);
$splt = explode('=', $result);
$app_access_token =$splt[1];

$facebook->setAccessToken($app_access_token);

$args = array(
    'message' => 'MESSAGE_TEXT',

);
$result = $facebook->api('/USER_ID/apprequests','POST', $args);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top