2016-04-29 12 views
0

私はFacebookのログインエラーを記録していますし、時々私はこれを参照してください。FacebookのAPIのログインエラー - セッションの有効期限が切れている、検証のアクセストークン

これを引き起こしている可能性が何
OAuthException: Error validating access token: 
Session has expired on Friday, 29-Apr-16 14:00:00 PDT. 
The current time is Friday, 29-Apr-16 14:38:54 PDT. 

?私は誰かがウェブサイトに行き、コードが生成されてから38分後にログインをクリックし、トークンが失効したと仮定します。どうすればこれを防ぐことができますか?

$fbUser = $facebook->getUser(); 

if ($fbUser) 
{ 
    try 
    { 
     // We're logged in! 
     $user_profile = $facebook->api('/me'); 
    } 
    catch (FacebookApiException $e) 
    { 
     // Oh no, an error :(
     error_log($e); 
     $fbUser = null; 
    } 
} 

if ($fbUser) 
{ 
    try 
    { 
    $facebook_id = $facebook->getUser(); 
    $facebook_me = $facebook->api('/me'); 
    session->set('facebook_me', $facebook_me); 
    } 
    catch (FacebookApiException $e) 
    { 
    error_log($e); 
    } 
} 
else 
{ 
    $facebook_me = $session->value('facebook_me'); 
} 

答えて

0
Please Used this code. This code is working in my web. 
    $fbconfig['appid' ] = "your_app_id"; 
    $fbconfig['secret'] = "your_secret_key"; 
    $fbconfig['baseurl'] = "your_redirect_url"; 

    $user     = null; //facebook user uid  
    // Create our Application instance. 
    $facebook = new Facebook(array('appId' => $fbconfig['appid'],'secret' => $fbconfig['secret'],'cookie' => true,)); 
    //Facebook Authentication part 
    $user  = $facebook->getUser(); 
    // We may or may not have this data based 
    $loginUrl = $facebook->getLoginUrl (
     array (
      'scope'   => 'email,user_birthday,user_location,user_work_history,user_about_me,user_hometown', 
      'redirect_uri' => $fbconfig['baseurl'] 
     ) 
    ); 
    $logoutUrl = $facebook->getLogoutUrl(); 
    if ($user) { 
     try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me?fields=id,first_name,last_name,email,gender,locale,picture'); 
      echo "<pre>";print_r($user_profile);die; 
     } catch (FacebookApiException $e) { 
     //you should use error_log($e); instead of printing the info on browser 
     d($e); // d is a debug function defined at the end of this file 
     $user = null; 
     } 
    } 
+0

ありがとう:

私のコードは次のようなものです!私はそれを調べます:) – user1996496

+0

'$ access_token = $ facebook-> getAccessToken();'をどこに置いてもいいですか? – user1996496

+0

私はアクセストークンの必要はないと思う、APPIDとSECRET Key認証で十分です。 –