2016-08-04 31 views
1

nicht fangen Ich habe ein Problem beim Abfangen der richtigen Ausnahme, egal was ich tue ich bekomme die gleiche Antwort. Dies ist die Antwort, die ich in der Ansicht Fehler beim Überprüfen der Zugriffstoken erhalten: Der Benutzer hat 89 nicht autorisierte Anwendung FacebookResponseException in FacebookResponseException.php line:Ich kann Facebookexceptions in Versuch fangen Block

Die Ausgabe arrises nach einem vom Benutzer de-autorisiert meine App von Facebook, nachdem eine erstellt haben access_token, was ich zu tun habe, ist die Ausnahme abzufangen und automatisch auszuloggen und die Sitzung zu leeren: Aber ich kann nicht die richtige Ausnahme finden, um zu fangen Ich habe mit all diesen Punkten getestet: Ich habe das Problem darauf beschränkt, drinnen zu sein Dieser catch-Block: Ich habe den catch-Block eingefügt, danach den vollständigen Code, den ich in der Funktion meiner Route verwende.

try { 
    // Returns a `Facebook\FacebookResponse` object 
    $response = $fb->get('/me?fields=permissions'); 
    } catch(Facebook\Exceptions\FacebookResponseException $e) { 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Facebook\Exceptions\FacebookSDKException $e) { 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Facebook\Exceptions\FacebookAuthenticationException $e) { 
    echo 'Facebook Dan1 returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Facebook\Exceptions\FacebookAuthorizationException $e) { 
    echo 'Facebook Dan2 returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Facebook\Exceptions\FacebookClientException $e) { 
    echo 'Facebook Dan3 returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Exception $e) { 
    echo 'Facebook Dan4 returned an error: ' . $e->getMessage(); 
    exit; 
    } 

jetzt meine volle Code für diese Seite:

public function getHomeProfile(Request $request, LaravelFacebookSdk $fb) 
{ 
$user = Auth::user(); 

$token = Session::get('fb_user_access_token'); 
$twitterToken = Session::get('access_token'); 

// $fb->setDefaultAccessToken($token); 
// $resp = $fb->get('/debug_token?=input_token=$token'); 
// dd($resp); 

$permissionsToRequest = ([ 
    'public_profile', 
    'publish_actions' 
]); 

$login_link_for_public_actions = $fb->getLoginUrl($permissionsToRequest, 'http://pms.dev:8000/facebook/publicactions/callback'); 

if (isset($token)) { 

    $fb->setDefaultAccessToken($token); 



    // $debugToken = $fb->get('/debug_token?input_token=' . $token); 
    // $debugTokenResponse = $debugToken->getGraphNode()->asArray(); 

    // echo "<pre>"; 
    // print_r($debugTokenResponse); 
    // echo "<pre>"; 

    // die(); 
    try { 
    // Returns a `Facebook\FacebookResponse` object 
    $response = $fb->get('/me?fields=permissions'); 
    } catch(Facebook\Exceptions\FacebookResponseException $e) { 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Facebook\Exceptions\FacebookSDKException $e) { 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Facebook\Exceptions\FacebookAuthenticationException $e) { 
    echo 'Facebook Dan1 returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Facebook\Exceptions\FacebookAuthorizationException $e) { 
    echo 'Facebook Dan2 returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Facebook\Exceptions\FacebookClientException $e) { 
    echo 'Facebook Dan3 returned an error: ' . $e->getMessage(); 
    exit; 
    } catch(Exception $e) { 
    echo 'Facebook Dan4 returned an error: ' . $e->getMessage(); 
    exit; 
    } 

    // Returns a `Facebook\GraphNodes\GraphUser` collection 
    $facebookuser = $response->getGraphUser(); 
    //$ty= json_decode($facebookuser); 

    $permissions = $facebookuser['permissions']; 

    $checked = ''; 
    foreach ($permissions as $p) { 
     if ($p['permission'] == 'publish_actions' && $p['status'] == 'granted') { 
     $checked = 'checked'; 
     } 
    } 
} else { 
    $checked = null; 
} 

if (isset($twitterToken)) { 
    $twitterChecked = 'checked'; 
} else { 
    $twitterChecked = null; 
} 


$userPlugsCountry = $user->plugsCountry()->setPath($request->url()); 

$user_plugs_list = Auth::user()->plugs()->lists('id'); 

if (Auth::check()) { 
    $statuses = Status::where(function($query) { 

      return $query->where('user_id', Auth::user()->id)->where('parent_id', NULL) 
      ->orWhereIn('user_id', Auth::user()->plugs()->lists('id')); 
     })->orderBy('created_at', 'desc')->paginate(7); 
} 


if (array_key_exists('REQUEST_SCHEME', $_SERVER)) { 
    $cors_location = $_SERVER["REQUEST_SCHEME"] . "://" . $_SERVER["SERVER_NAME"] . 
    dirname($_SERVER["SCRIPT_NAME"]) . "/cloudinary_cors.html"; 
} else { 
    $cors_location = "http://" . $_SERVER["HTTP_HOST"] . "/cloudinary_cors.html"; 
} 

if ($request->ajax()) { 
    return [ 
    'statuses' => view('ajax.status')->with('user', $user)->with(compact('statuses'))->render(), 
    'next_page' => $statuses->nextPageUrl(), 
    'countries' => view('ajax.next_countries')->with('user', $user)->with(compact('userPlugsCountry'))->render(), 
    'next_countries_page' => $userPlugsCountry->nextPageUrl(), 
    'prev_countries_page' => $userPlugsCountry->previousPageUrl(), 
    ]; 
} 

return view('profile.home')->with('user', $user)->with('cors_location', $cors_location)->with('statuses',$statuses)->with('userPlugsCountry',$userPlugsCountry)->with('checked', $checked)->with('login_link_for_public_actions',$login_link_for_public_actions)->with('twitterChecked', $twitterChecked); 
} 
+0

Was ist die Nachricht, die Sie tatsächlich bekommen, AKA welche Catch-Block feuert und mit welcher Nachricht? – DaOgre

+0

@DaOgre die Nachricht, die ich bekomme, ist Fehler beim Validieren des Zugriffstokens: Der Benutzer hat die Anwendung FacebookResponseException in FacebookResponseException.php nicht autorisiert Zeile 89:, Das ist das Problem, ich kann nicht finden, welche Ausnahme kommt aus, ich habe alle Catch-Blöcke getestet mit dd ($ e) und immer noch die gleiche Nachricht für jeden einzelnen. Die Ausnahme scheint nicht abgefangen zu werden. Ich muss die richtige Ausnahme abfangen, um den gewünschten Code auszuführen – Luna

Antwort

0

OK dachte ich wetzen heraus, dass ich falsch mache. Ich verwende sammyk laravelfacebooksdk https://github.com/SammyK/LaravelFacebookSdk und wurde nur mit:

use SammyK\LaravelFacebookSdk\LaravelFacebookSdk; 

ich wusste nicht, dass ich auch

use Facebook; 

auf den Namespace hinzuzufügen benötigt.

einfache Lösung, das gab mir eine Menge Ärger.