2016-08-04 12 views
1

私は同じ応答を得るに関係なく、適切な例外をキャッチする問題があります。これは私がビューに表示されるレスポンスです アクセストークンの検証でエラーが発生しました:ユーザーがアプリケーションを承認していませんFacebookResponseException.php行のFacebookResponseException 89:try catchブロックでFacebookexceptionsをキャッチできません。

ユーザーがFacebookから自分のアプリケーションの認証を解除した後に問題が発生します。 access_token、私が行うべきことは、例外をキャッチし、自動的にそれらをログアウトしてセッションをフラッシュすることです:しかし、私はキャッチする適切な例外を見つけることができないようです。 私はこれらのすべてでテストしました:このキャッチブロック:私はキャッチブロックを含んでおり、その後、私のルートの機能で使用している完全なコードを含んでいます。

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; 
    } 

今、このページの私の完全なコードは:

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

あなたが実際に得ているメッセージは何ですか、ブロックをキャッチするAKAが発砲していて、どのようなメッセージがありますか? – DaOgre

+0

@DaOgreアクセストークンの検証中にエラーが発生しました:ユーザーがアプリケーションを承認していませんFacebookResponseException.php行89:これはどこから来たのかわからない問題です。 dd($ e)を使用していて、毎回同じメッセージが表示されます。例外は捕らえられていないようです。私は私が望むコードを実行するために適切な例外をキャッチする必要があります – Luna

答えて

0

OK私が間違ってやっていた研ぐを考え出しました。私はsammyk laravelfacebooksdk https://github.com/SammyK/LaravelFacebookSdkを使用していますし、唯一含めた:

use SammyK\LaravelFacebookSdk\LaravelFacebookSdk; 

私はまた、名前空間に

use Facebook; 

を追加する必要が実現しませんでした。

簡単な修正は、私に多くの問題をもたらしました。

関連する問題