Facebook sdk错误:跨站点请求伪造验证失败。 "州" URL和会话中的参数不匹配

时间:2016-01-12 03:36:16

标签: facebook-php-sdk

为什么我收到此错误?我想通过Facebook登录。

它给了我这个错误:

  

跨站点请求伪造验证失败。 "州"来自的param   URL和会话不匹配。

2 个答案:

答案 0 :(得分:0)

这是我的代码!

$ helper = $ fb-> getRedirectLoginHelper();

$this->facebook['callback_url'] = Yii::$app->urlManager->createAbsoluteUrl('users/user/set-info') . '&social_code=21g36fsdfe135e5';
    $this->facebook['login_url'] = $helper->getLoginUrl('https://example.com/index.php?r=users/user/set-info&social_code=21g36fsdfe135e5', $this->facebook['permissions']);

    try {
      // Get the Facebook\GraphNodes\GraphUser object for the current user.
      // If you provided a 'default_access_token', the '{access-token}' is optional.
      $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)) {

        $this->setUserData([
            'facebook' => [
                'access_token' => (string) $accessToken
            ]
        ]);  

        // OAuth 2.0 client handler
        $oAuth2Client = $fb->getOAuth2Client();

        // Exchanges a short-lived access token for a long-lived one
        $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
        $_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;

        // setting default access token to be used in script
        $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);          

        $response = $fb->get('/me?fields=email,id,name,first_name,last_name,link,gender,locale,timezone,updated_time,verified,location,friends', $accessToken);
        $tmp = $response->getGraphObject();

        echo 'Logged in as ' . $tmp->getName();

        $this->user_information = [
            'social_id' => $tmp['id'],
            'social_name' => 'facebook',
            'email' => $tmp['email'],
            'public_profile' => $tmp['link'],
            'first_name' => $tmp['first_name'],
            'last_name' => $tmp['last_name'],
            'gender' => $tmp['gender'],
            'home_address' => $tmp['location']['name'],
            'user_friends' => $tmp['friends'],
        ];

        $friends_response = $fb->get('/me/taggable_friends?fields=id,name,picture,email&limit=5000', $accessToken);
        $temp = $friends_response->getGraphEdge();


        $friends = array();
        for ($i = 0; $i < count($temp); ++$i) {
            $friends[] = $temp[$i];
        }

        $_SESSION['friends'] = $friends;

        $this->social_loggedIn = true;
    } 
    else {
        $this->social_loggedIn = false;
    }       

答案 1 :(得分:0)

请转到

文件

的src /实/ PersistentData / PersistentDataFactory.php

在您的Facebook SDK中

找到此代码

&#13;
&#13;
java.lang.NullPointerException
    at java.awt.GridBagConstraints.clone(GridBagConstraints.java:652)
    at java.awt.GridBagLayout.setConstraints(GridBagLayout.java:499)
    at java.awt.GridBagLayout.addLayoutComponent(GridBagLayout.java:700)
    at java.awt.Container.addImpl(Container.java:1120)
    at java.awt.Container.add(Container.java:966)
    at Audit.pnl7.initComponents(pnl7.java:633)
    at Audit.pnl7.<init>(pnl7.java:64)
...............
&#13;
&#13;
&#13;

并替换为

&#13;
&#13;
if ('session' === $handler) {
           new FacebookSessionPersistentDataHandler();
 
          }
&#13;
&#13;
&#13;