Facebook PHP SDK访问令牌问题



我一直有一些问题,让Facebook图形API与令牌和工作,没有重定向。我通过URL获得令牌,但facebook只是不会识别它。下面是代码:

$fb = new FacebookFacebook([
    'app_id' => $details['app_id'],
    'app_secret' => $details['app_secret'],
    'default_graph_version' => $details['default_graph_version']
]);
$authToken = $this->helper->fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$details['app_id']}&client_secret={$details['app_secret']}");
$fb->setDefaultAccessToken($authToken);
$response = $fb->get($page.'/posts');

我得到的错误是FacebookResponseException: 无效的OAuth访问令牌签名
在这一点上,我确定这不是正确的方法,但我找不到任何关于正确方法的文档。

原来我试图用完整返回的字符串设置默认令牌,该字符串为access_token=ACTUAL_TOKEN

$fb->setDefaultAccessToken($authToken);更改为

$info = explode('=', $authToken);
$fb->setDefaultAccessToken($info[1]);

已解决此问题。

编辑:


更好的是,事实证明你不需要像这样为应用程序请求令牌,所以这也可以工作:

$fb = new FacebookFacebook([
    'app_id' => $details['app_id'],
    'app_secret' => $details['app_secret'],
    'default_graph_version' => $details['default_graph_version'],
    'default_access_token' => $details['app_id'].'|'.$details['app_secret']
]);
$response = $fb->get($page.'/posts');

for facebook API v4 try this

我认为这个refo https://github.com/codeNmind/facebook-php-sdk-v4对你有帮助

use FacebookHttpClientsFacebookHttpable;
use FacebookHttpClientsFacebookCurl;
use FacebookHttpClientsFacebookCurlHttpClient;
use FacebookEntitiesAccessToken;
use FacebookEntitiesSignedRequest;
use FacebookFacebookSession;
use FacebookFacebookSignedRequestFromInputHelper;
use FacebookFacebookCanvasLoginHelper;
use FacebookFacebookRedirectLoginHelper;
use FacebookFacebookRequest;
use FacebookFacebookResponse;
use FacebookFacebookSDKException;
use FacebookFacebookRequestException;
use FacebookFacebookOtherException;
use FacebookFacebookAuthorizationException;
use FacebookGraphObject;
use FacebookGraphUser;
use FacebookGraphSessionInfo;
FacebookSession::setDefaultApplication('APP-ID','APP-SECRET-KEY');
$helper = new FacebookCanvasLoginHelper();
try {
    $session = $helper->getSession();
} catch (FacebookRequestException $ex) {
    echo $ex->getMessage();
} catch (Exception $ex) {
    echo $ex->getMessage();
}
if ($session) {
    try {
        $request = new FacebookRequest($session, 'GET', '/me');
        $response = $request->execute();
        $me = $response->getGraphObject();
        echo $me->getProperty('name');
    } catch(FacebookRequestException $e) {
        echo $e->getMessage();
    }
} else {
    $helper = new FacebookRedirectLoginHelper('https://apps.facebook.com/APP_NAMESPACE/'); // add your Facebook app namespace here
    // getting the login url for your app
    $auth_url = $helper->getLoginUrl(array('email')); // add new permission here as an index type array
    // redirecting the user directly to your Facebook canvas app you can also make a link of it
    echo "<script>window.top.location.href='".$auth_url."'</script>";
}

最新更新