2011-01-06 3 views
2

У меня есть автономный доступ, предоставленный пользователем, и истекает = 0 для сеанса, поэтому он не истекает. Я сохранил все значения сеанса, такие как access_code и т. Д. В базе данных. Сразу же после сохранения значений я могу прочитать новость. Через 2 секунды, когда я пытаюсь использовать эти сохраненные значения сеанса для чтения новостей, пользователь не работает. OAuthException: активный маркер доступа должна быть использована для запроса информации о текущем пользователеFacebook API офлайн доступ к новостной ленте

В Php, я использую эту строку-фид: $result=$facebook->api("/me/home?access_token=".$access_token);

Как ни странно, когда я ввожу код доступа к URL браузера, он работает:

https://graph.facebook.com/me/home?access_token= $ access_token.

Помните, когда пользователь дает разрешение, вы получите это в URL: http://example.it/home/newsfeed.php?perms=<permissionlist>&selected_profiles=<uid>&installed=1&session={session_key:<session_key>,uid:<uid>,expires:0,secret:<secret>,access_token:<firstpart>|<secondpart>|<third part>,sig:<sig>}

мой список разрешений таков:

«friends_about_me, friends_education_history, friends_likes, friends_interests, friends_location, friends_religion_politics, friends_work_history, publish_stream, friends_activities, friends_events, friends_hometown, friends_location, user_interests, user_likes, user_events, user_about_me, user_status , User_work_history, read_requests, read_stream, offline_access, user_religion_politics, электронная почта, user_groups ";

когда я ввожу URL выше любого браузер, он дает мне ленту новостей UID, как newsfeed.php имеет код PHP, который выводит новостную ленту. Не имеет значения, зарегистрирован ли пользователь или нет. IE даже загружает результат json в файл

Таким образом, информация о сеансе не истек, она работает. Но почему-то я не могу заставить Facebook полагать, что у меня есть правильные полномочия для чтения новостей.

Любая помощь очень ценится. Пожалуйста, напишите, как я могу восстановить значения сеанса, и верьте мне в Facebook.

Мое окончательное решение может быть найдено на моем обновленном блоге: http://akcora.wordpress.com/


я забыл упомянуть, что, даже если подача не работает, я все еще может отправлять сообщения о состоянии в профиле пользователя , Это не имеет никакого смысла. Я почти уверен, что ошибаюсь в кодировании. Например, это код состояния, который работает:

$attachment = array(
     'access_token' => $access_token, 
      'message' => 'Did a Test Post :', 
       'name' => "Offline posting using stored tokens", 
       'link' => "http:somelink.com", 
       'description' => "This post was made using a stored access token", 
      'picture'=>"some.jpg", 
     ); 

$ret_code=$facebook->api('/'.$target.'/feed', 'POST', $attachment); 

, но получение фида не работает. Безопасность должна быть более жесткой для публикации, чем получение новостей, не так ли?

+0

Вы urlencoding маркера доступа при использовании функции библиотеки? его, возможно, нужно будет закодировать, прежде чем использовать его с этой функцией. –

ответ

0

опубликовать access_token как параметр функции api, а не как параметр get в URL-адресе.

не волнуйтесь, библиотека facebook сделает для вас работу ...

$facebook->api("me/feed",array(
    "access_token"=>$access_token 
)); 

и, кстати, параметр сеанса больше не доступен в новом методе аутентификации OAuth.

сессия был перенесен в signed_request пары (или код на стороне сервера)

Смежные вопросы