php - 如何在我授予 php API 权限的 facebook 页面和组上发布
问题描述
朋友们,我有一个围绕着我旋转的问题。我正在学习使用 Facebook API,我有 24 小时使用它,我已经了解它是如何工作的,我感到有点抱歉,因为实际上很容易问题是我不太懂英语,所以很难我。
具体问题是:我用Facebook登录时,如何自动在选定的组和页面中发布?例如,在我管理的以下组中,我只选择一个。
问题是,当组发布时,组 id 是必需的,使用此代码段。
$response = $this->fb->post('/123456789/feed', $linkData, $accessToken);
所以?具体问题,我如何获得我授予权限的组列表(以及页面),以便能够(它发生在我身上),通过一个数组并自动发布。
现在我很清楚以下几点:
1.- 我需要创建一个应用程序:https ://developers.facebook.com/
2.- 安装 Facebook SDK:https ://github.com/facebook/php-graph-sdk
3.- 我的班级已经保存了这些权限和这个配置:
require_once "/../vendor/autoload.php";
class facebookController{
private $appid ='XXXXX';
private $appsecret='XXXXXXXXXXXXXXXXXXXXXXXXXX';
public $fb;
public $helper;
public $permisos = ['email', 'manage_pages', 'publish_pages' , 'publish_to_groups', 'user_posts', 'groups_access_member_info'];
public $callbackurl = 'http://localhost/misitio.com.mx/auth/fb-callback.php';
public $loginurl;
function __construct(){
$this->fb = new Facebook\Facebook([
'app_id' => $this->appid,
'app_secret' => $this->appsecret,
'default_graph_version' => 'v3.2',
]);
$this->helper = $this->fb->getRedirectLoginHelper();
$this->loginurl = $this->helper->getLoginUrl($this->callbackurl, $this->permisos);
}
}
4.-我必须获得访问令牌,可以在这里调试:https ://developers.facebook.com/tools/explorer?method=GET&path=me%3Ffields%3Did%2Cname&version=v3.2
$this->helper = $this->fb->getRedirectLoginHelper();
try {
$accessToken = $this->helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
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;
}
5.- 在某些情况下我需要 user_id,我已经保存了它:
$oAuth2Client = $this->fb->getOAuth2Client();
$tokenMetadata = $oAuth2Client->debugToken($accessToken);
$userid = $tokenMetadata->getUserId();
6.- 例如,要在群组中发帖,我使用以下内容,这就是不便之处:(基于官方文档:https ://developers.facebook.com/docs/graph-api/reference/v3 。 2/用户/组)
public function toPost($titulo, $url){
$empresa = new configuracionController();
$userid=$empresa->getFbUserId();
$accessToken = $empresa->getFBToken();
try {
// Returns a `Facebook\FacebookResponse` object
$this->fb->post('/123456789/feed', $url, $accessToken);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
}
从已经非常感谢了。
解决方案
推荐阅读
- reactjs - JSX 元素类型“MultiSelectComponent”没有任何构造或调用签名
- prolog - 求一棵树的加权和
- docker - 如何自动将 Gitlab 备份到远程服务器
- javascript - 有什么方法可以根据它们的值(如负/正)隐藏条形吗?
- angular7 - 如何在Angular 7+中获取响应状态403而不是0
- c++ - 在一台 Windows 机器上生成的 pdb 文件是否可以在另一台 Windows 机器上工作
- maven - 在 Azure Repo git 的单个存储库中为子目录设置 maven 管道
- opencv - Opencv plus unity(资产存储插件)
- json - Avro 架构不符合我的 json 数据?
- android - 从浏览器打开 Intent url