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

如何解决通过更改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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?