我尝试使用脸谱图api在其网站上显示体育团队的脸部状态更新,但似乎无法获得有效的访问令牌。
这是我的代码。
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;
有什么明显的我做错了吗?
答案 0 :(得分:0)
这是我在Laravel 4应用程序中使用的连接方式。基本上当用户点击“登录”时按钮, 1-使用app_id,app_secret和default_graph_version创建Facebook实例。 2-获取一个redirectLoginHelper对象,以获取一个loginUrl,其中包含facebook将在您调用$ helper-> getLoginUrl($ redirectUrl,(array)$ permissionsNeeded)时提供的代码 3-重定向到该URL 4-再次创建facebook实例和getRedirectLoginHelper作为步骤1和2 5-检查您是否收到了'代码'帮助返回的网址中的参数 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