2012-01-14 8 views
4

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

$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

を取得し、私は知りません。

+0

あなたが受け取ったエラー全体を含める必要があります。この場合、それはfacebook sdkから来ていることはかなり明白ですが、エラー文字列全体を含めるのは良い考えです。通常、どのファイルがエラーを発生させたのか、コードがどの行にあったのかに関する情報が含まれています。 – Lix

答えて

8

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

  • あなたが必要なもの(request dialog付き)開始したユーザー
  • Graph APIで)生成されたアプリ

は、ユーザーのアプリケーションがアクセストークン必要としませうことを意味し、app generated requestsです。

私はあなたのコードサンプルにfacebookオブジェクトの開始を含めておらず、おそらくすでにユーザーを確認しているため、getAccessToken()呼び出しがユーザーアクセストークンを返し、ユーザーのアクセストークンを返していないため、アプリケーションアクセストークン。

+2

私は正しい方向に向いてくれてありがとう – slash197

1

「特定のイベントが発生したときに、アプリからユーザーにメッセージを送信しようとしています。今はこのコードがあります」という意味です。イベントを送信する彼らの壁に誰かの記事

  • アプリを送信するユーザーに

  • を招待するとき、ユーザーに電子メールを送信

    1. 上の書き込みのユーザに

    2. を招待「XYZがあなたとファイルを共有しました」のようなことが起こったときのユーザーの壁。あなたはユーザーのemailread_stream権限が必要です

      1. に答えるために

      。 RealTime Updatesを使って彼の壁を監視し、あなたのサーバーのSMTPを使って彼に電子メールを送ってください。

    3. は、イベントを作成する方法についてhttp://developers.facebook.com/docs/reference/api/event/#invitedを参照してください@Lixが指摘したように

    4. を招待し、あなたが新しいグラフを開くオブジェクト/アクションを使用して、これを達成する必要がありhttps://developers.facebook.com/docs/channels/#requests

    5. を参照してください。この例を参照してください:https://developers.facebook.com/docs/beta/opengraph/tutorial/

  • 0

    あなたが経由でFacebookアプリのアクセストークンを受け取ることができます。

    FacebookのPHP SDK(必要な場合エラー処理を追加)を使用して、アプリケーション・ツー・ユーザーのリクエストを投稿するコードサンプルを作業する
    https://graph.facebook.com/oauth/access_token?client_id=FB_APP_ID&client_secret=FB_APP_SECRET&grant_type=client_credentials 
    

    $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); 
    
    関連する問題