Facebook php张贴页面问不必要的问题

时间:2019-05-03 08:49:59

标签: facebook facebook-graph-api facebook-php-sdk

我有一个使用php脚本的Facebook应用程序,我已经使用了一段时间,以发布指向我管理的页面的链接。它曾经工作得很顺利。最近,在发帖之前,它先问了我一系列问题,然后才成功发帖。

不用说,我是这个应用程序的管理员,并且已经登录。对于其余的问题,我正在使用'the-app''the-用户而不是真实姓名。

问题1:以用户身份继续吗?
该应用程序将收到您的姓名和个人资料照片。未经您的允许,这不允许该应用发布到Facebook。

第二季度:您想在应用程序中使用哪些页面?
在下一步中,您将确定该应用程序可以对所选页面执行的操作。

第三季度:该应用允许做什么?
如果您关闭这些选项,则该应用程序可能无法正常运行。
管理页面
发布为您管理的页面

第四季度:您现在已将该应用链接到Facebook
您可以在业务集成设置中更新该应用程序可以执行的操作。要完成设置,该应用可能需要其他步骤。

如何摆脱这些不必要的问题,让应用程序像以前一样顺利地在没有它们的情况下正常运行?

相关的代码分为两个阶段运行,其中阶段1重定向到阶段2:

<?php
session_start();
require_once __DIR__ . '/facebook-sdk-v562/autoload.php';
$ok_to_continue = true;
$posted = false;
$errtxt = '';

//=====================
// Get and check phase:
//=====================
if ($ok_to_continue) {
  $phase = '2';
  if (isset($_REQUEST['phase'])) $phase = $_REQUEST['phase'];
  if ($phase != '1' && $phase != '2') oops('Bad phase argument found.');
  if ($phase == '2') {
    header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    header('Content-Type: text/html; charset=windows-1255');
  }
}

//=====================================
// Get and check other input arguments:
//=====================================
if ($ok_to_continue) {
  // ... piece of code to get the $link argument in both phases and check it
}

//=================================
// Initialize Facebook environment:
//=================================
if ($ok_to_continue) {
  $my_app_id = '...............';
  $my_app_secret = '................................';
  $default_graph_version = 'v2.10';
  $home_url = 'https://www.example.com/the-app/index.php';
  $my_page_id = '...............';
  $fb = new Facebook\Facebook([
    'app_id' => $my_app_id,
    'app_secret' => $my_app_secret,
    'default_graph_version' => $default_graph_version
  ]);
}

//===============================================================
// If phase1, redirect to myself with phase2, for facebook login:
//===============================================================
if ($ok_to_continue) {
  $helper = $fb->getRedirectLoginHelper();
  if ($phase == '1') {
    $phase2_url = $home_url;
    $fbPermissions = ['manage_pages', 'publish_pages'];
    $loginUrl = $helper->getLoginUrl($phase2_url, $fbPermissions);
    header('Location: ' . $loginUrl);
    oops('After redirected.');
  }
}

//=======================
// Get user access token:
//=======================
if ($ok_to_continue) {
  try { $accessToken = $helper->getAccessToken(); }
  catch(Facebook\Exceptions\FacebookResponseException $e) { oops('Get user access token graph error: ' . $e->getMessage()); }
  catch(Facebook\Exceptions\FacebookSDKException $e) { oops('Get user access token facebook SDK error: ' . $e->getMessage()); }
}
if ($ok_to_continue) {
  $fb->setDefaultAccessToken($accessToken); // set the default fallback access token so we don't have to pass it to each request
}

//=======================
// Get page access token:
//=======================
if ($ok_to_continue) {
  try { $response = $fb->get('/' . $my_page_id . '?fields=access_token'); }
  catch(Facebook\Exceptions\FacebookResponseException $e) { oops('Get page access token graph error: ' . $e->getMessage()); }
  catch(Facebook\Exceptions\FacebookSDKException $e) { oops('Get page access token facebook SDK error: ' . $e->getMessage()); }
}
if ($ok_to_continue) {
  $json = json_decode($response->getBody());
  $pageAccessToken = $json->access_token;
}

//===================
// Post link to page:
//===================
if ($ok_to_continue) {
  $post_params = [
    'link' => urldecode($link),
    'message' => 'Published link:'
  ];
  try { $response = $fb->post('/' . $my_page_id . '/feed', $post_params, $pageAccessToken); }
  catch(Facebook\Exceptions\FacebookResponseException $e) { oops('Post to page graph error: ' . $e->getMessage()); }
  catch(Facebook\Exceptions\FacebookSDKException $e) { oops('Post to page facebook SDK error: ' . $e->getMessage()); }
}
if ($ok_to_continue) {
  $graphNode = $response->getGraphNode();
  $post_id = $graphNode['id'];
  $posted = true;
}

//===============
// Error handler:
//===============
function oops($errmsg) {
  global $ok_to_continue;
  global $errtxt;
  $ok_to_continue = false;
  $errtxt = $errmsg;
}

?>

0 个答案:

没有答案