объект apprequests выдает ошибку Токен доступа требуется даже при предоставлении токена доступа к приложению

Я пытаюсь получить информацию о запросах, отправленных моим приложением (см. https://developers.facebook.com/docs/reference/api/user/#apprequests), но даже после предоставления моего токена доступа к приложению я получаю этот ответ всякий раз, когда пытаюсь получить доступ к объекту apprequest в Graph API. :

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

Я получаю токен доступа к своему приложению, отправляя запрос GET по следующему URL-адресу:

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/) получает информацию о запросе точно так же, как описано выше (получение токена доступа к приложению, запросить предварительный запрос, нажав Graph API).

Спасибо за помощь!


person dwlz    schedule 03.06.2012    source источник


Ответы (1)


У меня была такая же проблема только сейчас. Возможно, вы уже разобрались, но я все равно отвечу для всех, кто придет сюда.

Если вы заметили $apprequest_utl, вы увидите, что это что-то вроде

https://graph.facebook.com/USER_ID/apprequests?message=Request_Messagedata=somedataaccess_token=ACCESSTOKENmethod=post

Здесь то, что должно было быть «&», на самом деле является «», что в любом случае то же самое, но не работает с приложениями facebook с функцией php file_get_contents. Вместо этого используйте завиток, и все работает нормально!

<?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");

?>
person Pedro Gonçalves    schedule 28.06.2012