繁体   English   中英

从 Facebook Graph API 获取访问令牌

[英]Getting an access token from the Facebook Graph API

我正在尝试使用 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_id、app_secret 和 default_graph_version 创建 Facebook 实例。 2- 获取一个redirectLoginHelper 对象以获取一个带有代码的loginUrl,当您调用$helper->getLoginUrl($redirectUrl, (array) $permissionsNeeded) 3- 重定向到该url 4- 创建facebook 实例并再次getRedirectLoginHelper 作为步骤 1 和 2 5- 检查您是否在帮助返回的 url 中收到“代码”参数 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM