使用Facebook SDK 4,Graph API 2.X定义无应用程序id+机密的单次调用的令牌


Define token for single call without app id+secret with Facebook SDK 4, Graph API 2.X

使用以前的图形api和facebook的SDK,我可以将单个令牌定义为

'access_token => $token'

就是这样。

但现在,有了新的SDK,我不知道该怎么做,也不知道这是否可能。

这是我的新代码(不起作用):

<?php
require_once 'autoload.php';
use Facebook'FacebookSession;
use Facebook'FacebookRedirectLoginHelper;
use Facebook'FacebookRequest;
use Facebook'FacebookResponse;
use Facebook'FacebookSDKException;
use Facebook'FacebookRequestException;
use Facebook'FacebookAuthorizationException;
use Facebook'GraphObject;
use Facebook'Entities'AccessToken;
use Facebook'HttpClients'FacebookCurlHttpClient;
use Facebook'HttpClients'FacebookHttpable;

$request = new FacebookRequest(
$session,
  'POST',
  '/post_id/comments',
  array (
'access_token' => 'CAALXXXXXXXXXXXXXXXXXXXXXXXXXX',
'message' => 'this is a test',
  )
);
?>

(当然,当我运行代码时,我会更改访问令牌和post-id的值)

这是我以前工作的代码:

<?php
require_once('dir/src/facebook.php');

  $config = array(
    'fileUpload' => true,
    'allowSignedRequest' => false
  );
  $facebook = new Facebook($config);
$comment = $facebook->api('/post_id/comments', 'POST', array(
'access_token' => 'CASDASDASDASDASDASDSDSD',
'message' => 'this is a test message',
)
);

?>

显示的错误为:

可捕获的致命错误:传递到FacebookRequest::__construct()的参数1必须是Facebook''FacebookSession的实例,给定字符串,在第27行的/home//public_html/post_comment.php中调用,并在第187行的/hom/public_html/src/Facebook/FacebookRequest.php中定义

请帮助我了解如何在不需要通过facebook的新sdk登录任何应用程序的情况下使用单个令牌进行评论。

非常感谢。

首先设置一个新的Facebook应用程序,您可以在这里找到它。

按照提示保存应用程序ID和应用程序机密。

启动会话:

session_start();
FacebookSession::setDefaultApplication($app_id,$secret);
FacebookSession::enableAppSecretProof(false);

但现在你想要一个访问令牌,所以让我们请求一个(这样我们就不必每次到期都手动获取):

$session = FacebookSession::newAppSession();
$response = new FacebookRequest($session, 'GET', '/oauth/access_token?client_id='.($app_id.'&client_secret='.$secret.'&grant_type=client_credentials'))->execute();
$token = $response->getGraphObject()->asArray()['access_token'];

现在用新的$token开始一个会话,并提交一个请求:

$session = new FacebookSession($token);
$request = new FacebookRequest(
    $session,
    'GET',
    '/'.$post_id.'/comments'
);