1

アプリケーションから送信された apprequests に関する情報を取得しようとしています ( https://developers.facebook.com/docs/reference/api/user/#apprequestsを参照)が、アプリのアクセス トークンを提供した後でも取得していますGraph API で apprequest オブジェクトにアクセスしようとすると、次の応答が返されます。

{
  "error": {
    "message": "An access token is required to request this resource.", 
    "type": "OAuthException", 
    "code": 104
  }
}

次の URL に GET 要求を発行して、アプリ アクセス トークンを取得します。

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

次に、ヒットして apprequest オブジェクトにアクセスしようとします

https://graph.facebook.com/REQUEST_ID?access_token=APP_ACCESS_TOKEN

この URL にアクセスすると、上記で定義したエラーが発生します。access_token を URL で提供しているので、このエラーはバグかドキュメントを誤解していると思いますが、Facebook のブログ投稿 ( https://developers.facebook.com/blog/post/464/を参照) だと思います) 上記とまったく同じ方法で apprequest 情報を取得します (アプリ アクセス トークンを取得し、Graph API を押して apprequest を要求します)。

助けてくれてありがとう!

4

1 に答える 1

2

私は今同じ問題を抱えていました。おそらくもう解決したと思いますが、ここに到着したすべての人にとにかく返信します。

$apprequest_utl に気付くと、次のようなものであることがわかります。

https://graph.facebook.com/USER_ID/apprequests?message=Request_Message&data=somedata&access_token=ACCESSTOKEN&method=post

ここで、「&」であるはずだったのは、実際には「&」であり、とにかく同じですが、php 関数 file_get_contents を使用する Facebook アプリでは機能しません。代わりに、curl を使用すると、すべて正常に動作します。

<?php 

function app_request ($request_string,$app_id,$app_secret,$user_id,$type) {

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

  $app_access_token = file_get_contents($token_url);

  $request_string=utf8_encode($request_string);

  $apprequest_url ="https://graph.facebook.com/" .
    $user_id .
    "/apprequests?message=" .
    $request_string . 
    "&data=" .
    $type . 
    "&" .
    $app_access_token . "&method=post";

  $result = curl($apprequest_url);
  echo "Request id number: " . $result;

}

  function curl($url){

        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
        return curl_exec($curl);
        curl_close($curl);

}

//Call the function and make the app request!
app_request("Test",$APP_ID,$APP_SECRET,$USER_ID,"Test");

?>
于 2012-06-28T16:44:23.703 に答える