Facebook: получение объекта запроса (из request_id) перед авторизацией с использованием JS SDK - PullRequest
0 голосов
/ 09 сентября 2011

Когда пользователь входит в мое приложение через apprequest, Facebook добавляет к URL-адресу request_id.

Я пытаюсь получить доступ к этому объекту, прежде чем пользователь авторизует мое приложение.Когда я пытаюсь сделать вызов API:

FB.api('/'+requestId, function(response){ console.log(response); }); 

, он возвращает следующее:

error: Object
message: "An access token is required to request this resource."

Но у меня должен быть доступ, так как именно мое приложение отправило запрос в первую очередь!

Я немного покопался и заметил, что на стороне PHP он будет использовать user_access_token, если он доступен, и app_access_token в противном случае.

Является ли это ограничением безопасности (т.е.app_access_token на стороне клиента) или я делаю что-то не так?

Любое понимание будет полезным.Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

когда вы отправляете запрос в / {user_id} / apprequests, вы уже должны авторизовать пользователя ... Поскольку запрос был создан вашим приложением - только ваше приложение может управлять -ie delete иличитать запросы, которые были отправлены.По сути, до того, как пользователь авторизует ваше приложение, он / она анонимен для вашего приложения - поэтому было бы невозможно прочитать запросы пользователей, потому что вы «не знаете», кто они ...

Надеюсь, это поможет...

0 голосов
/ 09 сентября 2011

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

http://developers.facebook.com/blog/post/464

<code><?php 

  $app_id = 'YOUR_APP_ID';
  $app_secret = 'YOUR_APP_SECRET';

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

  $access_token = file_get_contents($token_url);

  $signed_request = $_REQUEST["signed_request"]; 
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);
  $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
  $user_id = $data["user_id"];

  //Get all app requests for user
  $request_url ="https://graph.facebook.com/" .
    $user_id . "/apprequests?" .
    $access_token;
  $requests = file_get_contents($request_url);

  //Print all outstanding app requests
  echo '<pre>';
  print_r($requests);
  echo '
';// Обрабатываем и удаляем запросы приложений $ data = json_decode ($ запросы);foreach ($ data-> data as $ item) {$ id = $ item-> id;$ delete_url = "https://graph.facebook.com/". $ id."? ". $ access_token." & method = delete "; $ result = file_get_contents ($ delete_url); echo (" Запросы удалены? ". $ result);}?>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...