2012-10-30 3 views
6

Я уже разрешил пользователю в своем приложении Facebook использовать HybridAuth и сохранил его access_token в моей базе данных.«Не в сети» доступ с HybridAuth

Спустя несколько дней, когда пользователь не подключен к сети, я хочу получить его новых друзей в Facebook, также используя HybridAuth.

Могу ли я «воссоздать» этого пользователя из его access_token, чтобы получать его друзей, отправлять уведомления и т. Д.?

Спасибо!

ответ

7

Наконец-то я нашел хак, который работает, я оставлю его здесь для следующего парня, который его ищет. Если вы убедитесь, что у вас есть действующий токен для пользователя и приложения, HybridAuth не должен пытаться перенаправлять или возвращать какие-либо ошибки.

(Я использую Codeigniter, но перевод его на «чистый» HybridAuth должен быть простым:

$token = "GET A TOKEN IN Facebook's API EXPLORER"; 
    $this->load->library('HybridAuthLib'); 
    $this->hybridauthlib->storage()->set("hauth_session.facebook.is_logged_in", 1); 
    $this->hybridauthlib->storage()->set("hauth_session.facebook.token.access_token", $token);   
    $service = $this->hybridauthlib->authenticate('Facebook'); 

    if ($service->isUserConnected()){ 

     $user_profile = $service->getUserProfile(); 
     $contacts = $service->getUserContacts(); 
     $access_token = $service->getAccessToken(); 

     var_dump($user_profile); 
     var_dump($contacts); 
     var_dump($access_token); 

    }else{ 
     echo "something went wrong"; 
    } 
+0

вы не переопределение вошедшие в токенах OAuth пользователя (то есть, то один просмотр страницы профиля)? Или, может быть, вы просто устанавливаете токены доступа внутри HybridAut h для работы? Метод IIINT 'authenticate()' устанавливает данные сеанса для пользователя, когда он завершен, не вызывает ли серьезных ошибок в вашем веб-приложении? Ясность может помочь; Я столкнулся с аналогичной проблемой. Спасибо – Abdulaziz

+0

Я использую это в процессе на стороне сервера (обрабатывается cron), который я использую, чтобы асинхронно публиковать действия, хранящиеся в базе данных, нет входа в систему - он недоступен для пользователей. Если бы он был доступен через браузер, поведение было бы тем, что вы говорите – Marc

+0

Я использовал это для работы с токенами, полученными с помощью интерфейса javascript. Он также работает с остальными поставщиками социальных услуг, такими как google plus и т. Д. Большое спасибо за ваш пост. – Lucia