访问令牌不从Facebook PHP sdk检索数据

时间:2016-03-27 08:11:11

标签: php facebook magento

这是我从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;
                }
            }


    }

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

1 个答案:

答案 0 :(得分:0)

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

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