Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未指定fb_交换_令牌参数_Php_Facebook_Facebook Graph Api_Facebook Php Sdk_Facebook Login - Fatal编程技术网

Php 未指定fb_交换_令牌参数

Php 未指定fb_交换_令牌参数,php,facebook,facebook-graph-api,facebook-php-sdk,facebook-login,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,Facebook Login,我找不到这方面的任何文件 这是我的密码: index.php <?php session_start(); require_once __DIR__ . '/vendor/autoload.php'; $fb = new Facebook\Facebook([ 'app_id' => '000000000000000', 'app_secret' => '00000000000000000000000000000', 'default_graph_version'

我找不到这方面的任何文件

这是我的密码:

index.php

<?php
session_start();
require_once __DIR__ . '/vendor/autoload.php';
$fb = new Facebook\Facebook([
  'app_id' => '000000000000000',
  'app_secret' => '00000000000000000000000000000',
  'default_graph_version' => 'v2.6',
  'persistent_data_hander' => 'session'
]);
$redirect = 'http://www.domain.com/loggedin.php';
$helper = $fb->getRedirectLoginHelper();

if (isset($_COOKIE['LOGIN'])){
  header("Location: http://www.domain.com/loggedin.php");
  die();
}else{
        $permissions  = ['user_birthday, user_location'];
        $loginUrl = $helper->getLoginUrl($redirect,$permissions);

?>

<a href="<?php echo "".$loginUrl; } ?>"><img src="assets/img/fbloginbutton.png"></a>
<?php

//debug
//debug
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//debug
//debug

session_start();
require_once __DIR__ . '/vendor/autoload.php';
$fb = new Facebook\Facebook([
  'app_id' => '00000000000000000',
  'app_secret' => '000000000000000000000000000000000',
  'default_graph_version' => 'v2.6',
  'persistent_data_hander' => 'session'
]);
$helper = $fb->getRedirectLoginHelper();

if (isset($_SESSION['fb_a_token']))
{
  $fb->setDefaultAccessToken($_SESSION['fb_a_token']);
}
else
{
  try {
    $accessToken = $helper->getAccessToken();
    $oAuth2Client = $fb->getOAuth2Client();
    $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
    $fb->setDefaultAccessToken($longLivedAccessToken);
    $_SESSION['fb_a_token'] = (string) $longLivedAccessToken;
  } catch(Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
    //header("Location: http://www.domain.com");
    die();
  } catch(Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    // echo 'Facebook SDK returned an error: ' . $e->getMessage();
    header("Location: http://www.domain.com");
    die();
  } catch(Exception $e){
    header("Location: http://www.domain.com");
    die();
  }
}

$accessToken = $_SESSION['fb_a_token'];
$request_parm = '/me?fields=name,gender,age_range,birthday,location';
try {
        $response = $fb->get($request_parm);
        $userNode = $response->getGraphUser();
}catch(Facebook\Exceptions\FacebookResponseException $e) {
        // When Graph returns an error
        //echo 'Graph returned an error: ' . $e->getMessage();
        header("Location: http://www.domain.com");
        die();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
        // When validation fails or other local issues
        //echo 'Facebook SDK returned an error: ' . $e->getMessage();
        header("Location: http://www.domain.com");
        die();
} catch(Exception $e){
        header("Location: http://www.domain.com");
        die();
}

setcookie('LOGIN', 'yes', time() + 9600);

$image = 'https://graph.facebook.com/'.$userNode->getId().'/picture?width=200';

$birthday = $userNode->getProperty('birthday');
$year = (int) $birthday->format('Y');
$curryear = (int) date("Y");
$userage = $curryear - $year;

$gender = $userNode->getProperty('gender');
if ($gender == null) {
        $gender = "other";
}

    ?>

<h3>First name: <?php echo "".$userNode->getName();                     ?>      </h3>
                                        <h3>Age:        <?php echo "".$userage;                                ?>       </h3>
                                        <h3>Gender:     <?php echo "".$gender;                           ?>     </h3>
                                        <h3>Location:   <?php echo "".$userNode->getProperty('location')['name'];          ?>   </h3>

loggedin.php

<?php
session_start();
require_once __DIR__ . '/vendor/autoload.php';
$fb = new Facebook\Facebook([
  'app_id' => '000000000000000',
  'app_secret' => '00000000000000000000000000000',
  'default_graph_version' => 'v2.6',
  'persistent_data_hander' => 'session'
]);
$redirect = 'http://www.domain.com/loggedin.php';
$helper = $fb->getRedirectLoginHelper();

if (isset($_COOKIE['LOGIN'])){
  header("Location: http://www.domain.com/loggedin.php");
  die();
}else{
        $permissions  = ['user_birthday, user_location'];
        $loginUrl = $helper->getLoginUrl($redirect,$permissions);

?>

<a href="<?php echo "".$loginUrl; } ?>"><img src="assets/img/fbloginbutton.png"></a>
<?php

//debug
//debug
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//debug
//debug

session_start();
require_once __DIR__ . '/vendor/autoload.php';
$fb = new Facebook\Facebook([
  'app_id' => '00000000000000000',
  'app_secret' => '000000000000000000000000000000000',
  'default_graph_version' => 'v2.6',
  'persistent_data_hander' => 'session'
]);
$helper = $fb->getRedirectLoginHelper();

if (isset($_SESSION['fb_a_token']))
{
  $fb->setDefaultAccessToken($_SESSION['fb_a_token']);
}
else
{
  try {
    $accessToken = $helper->getAccessToken();
    $oAuth2Client = $fb->getOAuth2Client();
    $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
    $fb->setDefaultAccessToken($longLivedAccessToken);
    $_SESSION['fb_a_token'] = (string) $longLivedAccessToken;
  } catch(Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
    //header("Location: http://www.domain.com");
    die();
  } catch(Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    // echo 'Facebook SDK returned an error: ' . $e->getMessage();
    header("Location: http://www.domain.com");
    die();
  } catch(Exception $e){
    header("Location: http://www.domain.com");
    die();
  }
}

$accessToken = $_SESSION['fb_a_token'];
$request_parm = '/me?fields=name,gender,age_range,birthday,location';
try {
        $response = $fb->get($request_parm);
        $userNode = $response->getGraphUser();
}catch(Facebook\Exceptions\FacebookResponseException $e) {
        // When Graph returns an error
        //echo 'Graph returned an error: ' . $e->getMessage();
        header("Location: http://www.domain.com");
        die();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
        // When validation fails or other local issues
        //echo 'Facebook SDK returned an error: ' . $e->getMessage();
        header("Location: http://www.domain.com");
        die();
} catch(Exception $e){
        header("Location: http://www.domain.com");
        die();
}

setcookie('LOGIN', 'yes', time() + 9600);

$image = 'https://graph.facebook.com/'.$userNode->getId().'/picture?width=200';

$birthday = $userNode->getProperty('birthday');
$year = (int) $birthday->format('Y');
$curryear = (int) date("Y");
$userage = $curryear - $year;

$gender = $userNode->getProperty('gender');
if ($gender == null) {
        $gender = "other";
}

    ?>

<h3>First name: <?php echo "".$userNode->getName();                     ?>      </h3>
                                        <h3>Age:        <?php echo "".$userage;                                ?>       </h3>
                                        <h3>Gender:     <?php echo "".$gender;                           ?>     </h3>
                                        <h3>Location:   <?php echo "".$userNode->getProperty('location')['name'];          ?>   </h3>

名字:
年龄:
性别:
地点:
我想知道fb_交换_代币的作用以及如何处理它

重演我的错误:

  • 删除所有缓存
  • 登录并成功重定向
  • 关闭浏览器而不删除缓存
  • 在loggedin.php处再次打开浏览器并获取此错误:图形返回一个错误:未指定fb_exchange_令牌参数,该参数从loggedin.php中的第一个try catch启动 由于劣质文档,我在Facebook网站或其他地方都找不到fb_exchange_token上的任何内容


    有人能帮忙吗?

    这是扩展访问令牌过程中使用的一个参数,看起来您此时没有有效的访问令牌,因此也无法获得长期有效的访问令牌。@CBroe,但我已登录。如果我刷新loggedin.php页面,似乎我成功地从Facebook获取了用户数据。只有当我关闭浏览器时,事情才会停止工作(尽管cookies仍然存在)。我不知道如何解决这个问题。@CBroe我用FB调试工具检查过,你说得对。我只得到一个短期访问令牌。我仍然不知道为什么我的代码不起作用<代码>$accessToken=$helper->getAccessToken()$oAuth2Client=$fb->getOAuth2Client()$longLivedAccessToken=$oAuth2Client->getLongLivedAccessToken($accessToken)
    $accessToken=$helper->getAccessToken()–这就是问题所在。您正在使用RedirectHelper,它希望URL中存在
    code
    参数,以交换短期访问令牌
    code
    不存在,因此您无法从该方法调用中获得访问令牌,因此您没有要在下一步中扩展的访问令牌。如果您仍然拥有有效的访问令牌/登录用户,则需要执行某种检查,在这种情况下不要使用redirecthelper。这是扩展访问令牌过程中使用的一个参数,看起来您此时没有有效的访问令牌,因此您也无法获得长期有效的访问令牌。@CBroe但我已登录。如果我刷新loggedin.php页面,似乎我成功地从Facebook获取了用户数据。只有当我关闭浏览器时,事情才会停止工作(尽管cookies仍然存在)。我不知道如何解决这个问题。@CBroe我用FB调试工具检查过,你说得对。我只得到一个短期访问令牌。我仍然不知道为什么我的代码不起作用<代码>$accessToken=$helper->getAccessToken()$oAuth2Client=$fb->getOAuth2Client()$longLivedAccessToken=$oAuth2Client->getLongLivedAccessToken($accessToken)
    $accessToken=$helper->getAccessToken()–这就是问题所在。您正在使用RedirectHelper,它希望URL中存在
    code
    参数,以交换短期访问令牌
    code
    不存在,因此您无法从该方法调用中获得访问令牌,因此您没有要在下一步中扩展的访问令牌。如果您仍然拥有有效的访问令牌/登录用户,则需要执行某种检查,在这种情况下不要使用redirecthelper。