Access Token未从Facebook PHP sdk中检索数据


Access Token not retrieving data from Facebook PHP sdk

这是我从Facebook检索用户信息的代码。我使用的是PHP SDK。

    public function indexAction()
    {
        $fb = new Facebook'Facebook([
            'app_id' => '934741473308351',
            'app_secret' => 'de001d018a7769eb17eb11300e772a0c',
            'default_graph_version' => 'v2.5',
            'default_access_token' => isset($_SESSION['facebook_access_token']) ? $_SESSION['facebook_access_token'] : 'APP-ID|APP-SECRET'

        ]);
        try {
            if(isset($_SESSION['facebook_access_token'])){
                $response = $fb->get('/me');
                $userNode = $response->getGraphUser();
                Mage::log("Email====>Before".$userNode->getFirstName());
                // echo  'Name: ' . $user['first_name'];
                $this->_redirectUrl('/app-new/app/#/myAccount');
                exit;
            }
             //redirect, or do whatever you want
        } catch(Facebook'Exceptions'FacebookResponseException $e) {
            //echo 'Graph returned an error: ' . $e->getMessage();
        } catch(Facebook'Exceptions'FacebookSDKException $e) {
            //echo 'Facebook SDK returned an error: ' . $e->getMessage();
        }
        $helper = $fb->getRedirectLoginHelper();
        $permissions = ['email', 'user_likes']; // optional
        $loginUrl = $helper->getLoginUrl(Mage::getBaseUrl().'facebook/facebook/authenticate', $permissions);
        echo $loginUrl;
    }
    public function authenticateAction(){
        Mage::log("Authenticate=======");
        $fb = new Facebook'Facebook([
            'app_id' => '934741473308351',
            'app_secret' => 'de001d018a7769eb17eb11300e772a0c',
            'default_graph_version' => 'v2.5',
        ]);
            $helper = $fb->getRedirectLoginHelper();
            try {
                $accessToken = $helper->getAccessToken();
            } catch(Facebook'Exceptions'FacebookResponseException $e) {
                // When Graph returns an error
                echo 'Graph returned an error: ' . $e->getMessage();
                exit;
            } catch(Facebook'Exceptions'FacebookSDKException $e) {
                // When validation fails or other local issues
                echo 'Facebook SDK returned an error: ' . $e->getMessage();
                exit;
            }
            if (isset($accessToken)) {
                // Logged in!
                Mage::log("Access Token=================>".(string) $accessToken);
                $oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
                $fb->setDefaultAccessToken((string) $accessToken);
                $_SESSION['facebook_access_token'] = (string) $accessToken;
                try {
                    $response = $fb->get('/me');
                    $userNode = $response->getGraphUser();
                    Mage::log("Email====>Before".$userNode->getFirstName());
                    $customer = $this->checkIfUserExists($userNode);
                    $this->_redirectUrl('/app-new/app/#/myAccount');
                    exit;
                } catch(Facebook'Exceptions'FacebookResponseException $e) {
                    // When Graph returns an error
                    echo 'Graph returned an error: ' . $e->getMessage();
                    exit;
                } catch(Facebook'Exceptions'FacebookSDKException $e) {
                    // When validation fails or other local issues
                    echo 'Facebook SDK returned an error: ' . $e->getMessage();
                    exit;
                }
            }

    }

我先得到了结果,但之后就没有结果了。是由于访问被占用还是其他原因。我在这里做错了什么

您缺少Graph API v2.4的一个新功能,它被称为"声明字段"。您现在必须添加一个field参数来指定要获取的字段,否则您将只能获得idname:https://developers.facebook.com/docs/apps/changelog#v2_4

此外,请确保您的登录正确,并且在授权您的应用程序时会要求您获得email权限。