通过更改CURL选项,通过代理使用FB Business SDK

问题描述

我正在构建一个可连接到许多不同客户的Facebook广告帐户的应用程序。我想将每个客户彼此隔离100%

该应用将使用 Facebook Business SDK 来读取帐户中的数据。我可以将我的应用程序实例放置在具有不同IP地址的不同服务器上。

我也可以更改SDK代码更具体地说,是对API进行的CURL请求。因此,我可以更改每个客户端的IP地址。通过代理。

浏览Facebook SDK Code on Gitub之后。 我认为 我发现了实际进行调用函数

请参见httpClientExecute函数here

private function httpClientExecute($http_client) {
    $base_url = 'https://graph.facebook.com/v' . ApiConfig::APIVersion;
    $url = $base_url . '/' . $this->container['pixel_id'] . '/events';

    $headers = array(
      'User-Agent' => 'fbbizsdk-PHP-v' . ApiConfig::SDKVersion,'Accept-Encoding' => '*',);

    $curl_options = array(
      CURLOPT_CONNECTTIMEOUT => 10,CURLOPT_TIMEOUT => 60,CURLOPT_RETURNTRANSFER => true,CURLOPT_HEADER => true,CURLOPT_CAINFO => Util::getCaBundlePath(),);

    $params = $this->normalize();
    if (HttpServiceClientConfig::getInstance()->getAccesstoken() == null) {
      $params['access_token'] = Api::instance()->getSession()->getAccesstoken();
    } else {
      $params['access_token'] = HttpServiceClientConfig::getInstance()->getAccesstoken();
    }

    $appsecret = null;
    if (HttpServiceClientConfig::getInstance()->getAppsecret() == null) {
      $appsecret = Api::instance()->getSession()->getAppSecret();
    } else {
      $appsecret = HttpServiceClientConfig::getInstance()->getAppsecret();
    }
    if ($appsecret != null) {
      $params['appsecret_proof'] = Util::getAppsecretProof($params['access_token'],$appsecret);
    }

    return $http_client->executeRequest(
      $url,HttpMethod::POST,$curl_options,$headers,$params
    );
  }

CURL选项有一个选项。我已经读过here,使用代理配置CURL非常容易。

我们可以简单地使用:curl_setopt($ch,CURLOPT_PROXY,$proxy);

我可以在FB PHP SDK代码中编辑$curl_options。我可以添加CURLOPT_PROXY选项。

$curl_options = array(
      CURLOPT_PROXY=> PROXY-IP-ADDRESS,CURLOPT_CONNECTTIMEOUT => 10,);
  • 我想念什么吗?一些PHP专家可以通过验证我的研究来帮助我吗?正在分析FB SDK代码
  • 接收端FB能够看到我正在使用代理吗? (我可以阻止它)
  • 是否可以在运行时仔细检查脚本中的所有CURL调用以及用于这些调用的IP?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...