使用 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',
)
);
?>
显示的错误是:
Catchable fatal error: Argument 1 passed to Facebook\FacebookRequest::__construct() must be an instance of Facebook\FacebookSession, string given, called in /home//public_html/post_comment.php on line 27 and defined in /home/public_html/src/Facebook/FacebookRequest.php on line 187
请帮助我了解如何使用单个令牌发表评论,而无需通过 facebook 的新 sdk 登录任何应用程序。
非常感谢。
首先设置一个新的Facebook应用程序which you can find here。
按照提示保存App ID和App Secret。
开始会话:
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'
);
使用之前的图表 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',
)
);
?>
显示的错误是:
Catchable fatal error: Argument 1 passed to Facebook\FacebookRequest::__construct() must be an instance of Facebook\FacebookSession, string given, called in /home//public_html/post_comment.php on line 27 and defined in /home/public_html/src/Facebook/FacebookRequest.php on line 187
请帮助我了解如何使用单个令牌发表评论,而无需通过 facebook 的新 sdk 登录任何应用程序。
非常感谢。
首先设置一个新的Facebook应用程序which you can find here。
按照提示保存App ID和App Secret。
开始会话:
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'
);