如何处理在Facebook中取消授权您的应用程序所产生的错误

时间:2016-08-03 23:13:21

标签: php facebook facebook-graph-api laravel-5

我想弄清楚如何处理用户取消授权我的Facebook应用时创建的错误。我正在使用幼虫5,这是我得到的当前错误:

验证访问令牌时出错:用户未授权应用程序

access_token存储在当前会话中。有没有办法可以使用try和catch语句或任何聪明的解决方案,这样当我得到一个不验证的access_token时,我仍然可以继续使用其余的代码。

下面是我正在使用的代码,它的世界伟大的填充应用程序被重新授权:

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

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

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

我将其缩小到try catch语句中出现的错误:

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

我在我的视图中收到此错误:FacebookResponseException.php第89行中的FacebookResponseException:

我在catch语句中尝试了dd()不同的值,但没有任何变化。我想我抓错了,不知道还能做什么?

0 个答案:

没有答案