Php 从Facebook Graph API获取访问令牌

Php 从Facebook Graph API获取访问令牌,php,facebook,facebook-graph-api,facebook-php-sdk,facebook-sdk-4.0,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,Facebook Sdk 4.0,我正在尝试使用facebook graph api在运动队的网站上显示facebook状态更新,但似乎无法获得有效的访问令牌 这是我的密码 require_once APPPATH.'/third_party/facebook-php-sdk-v4/src/Facebook/autoload.php'; $fb = new Facebook\Facebook([ 'app_id' => '123123123123', 'app_secret' => 'fghdfgh

我正在尝试使用facebook graph api在运动队的网站上显示facebook状态更新,但似乎无法获得有效的访问令牌

这是我的密码

require_once APPPATH.'/third_party/facebook-php-sdk-v4/src/Facebook/autoload.php';

$fb = new Facebook\Facebook([
    'app_id' => '123123123123',
    'app_secret' => 'fghdfghtyjdfghdghjfghjfghj', 
    'default_graph_version' => 'v2.5'
]);

$fb->setDefaultAccessToken('123123123123|dfhjfgytdfghdfhgdsfjd');

$helper = $fb->getCanvasHelper();

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.
} else {
    echo 'access token not set - THIS IS WHERE I ALWAYS SEEM TO END UP';
}
exit;

有什么明显的错误吗?

这是我在Laravel 4应用程序中用来连接的。基本上,当用户点击“登录”按钮时, 1-使用app\u id、app\u secret和默认的\u graph\u版本创建Facebook实例。 2-获取redirectLoginHelper对象以获取带有代码的loginUrl,facebook将在您调用$helper->getLoginUrl($redirectUrl,(数组)$PermissionsNeed)时提供该代码 3-重定向到该url 4-再次创建facebook实例和getRedirectLoginHelper,如步骤1和2所示 5-检查您是否收到帮助返回的url中的“code”参数 6-获取访问令牌:$accessToken=$helper->getAccessToken()

在我提供的代码中,我用一种方法完成所有这些步骤。我检查请求中是否有代码参数,如果没有,我请求它并重定向。下次代码运行时,当我检查代码是否存在时,它将继续执行下一步

$fb = new Facebook([
    'app_id' => 'facebook_app_id',
    'app_secret' => 'facebook_app_secret',
    'default_graph_version' => 'v2.5',
]);

$helper = $fb->getRedirectLoginHelper();

if(Input::get('code') == '') {
    $permissions = ['manage_pages, publish_actions'];
    $loginUrl = $helper->getLoginUrl('http://yoururl.dev/uri', $permissions);

    return Redirect::to($loginUrl);
}

try {
    $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    //Handle error
}

在这种情况下,登录按钮转到www.domain.app/connect,redirectLoginHelper返回的URL相同,但带有代码参数:www.domain.app/connect?code=ntasd341251

是否首先根据权限获取代码?类似于:$permissions=['manage_page,publish_actions']$loginUrl=$helper->getLoginUrl(URL::to('/your redirect URL'),$permissions);可能不是。。。我使用的所有代码都显示在这里…如果页面是公共的,那么你可以使用你的应用程序访问令牌来请求数据。否则,您将需要获取页面访问令牌,或者为能够查看页面的用户获取用户访问令牌。更多关于不同种类的代币以及如何获取代币的信息:顺便说一句,如果我理解正确的话,尝试在这里使用canvasHelper没有任何意义,你甚至不在canvas上,但应用程序在外部网站上。@CBroe如果我诚实的话,我是在对我必须做的事情知之甚少的情况下(好像这还不是很明显的情况下)得出这个结论的,所以我只是尝试了一下,直到我得到一些结果!不过我会看看你建议的链接。谢谢