Facebook商务软件开发包

facebook-business的Python项目详细描述


面向python的facebook业务sdk

构建状态

简介

facebook的business sdk是一站式服务,帮助我们的合作伙伴更好地为他们的业务服务。合作伙伴正在使用多个facebook api来满足客户的需求。采用所有这些api并在各种平台上保持它们的最新状态可能会非常耗时,而且最终会令人望而却步。为此,facebook开发了business sdk,将许多api捆绑到一个sdk中,以便于实现和维护。business sdk是marketing api sdk的升级版本,它包括marketing api以及来自不同平台(如pages、business manager、instagram等)的许多facebook api。

快速启动

《商业sdk入门指南》

python是目前第三方开发人员最流行的语言。facebook_business是一个python包,它在python应用程序和业务sdk中的facebook api之间提供接口。本教程介绍使用sdk所需的基本知识,并为读者提供一些练习。

注意Facebook商业包与Python2和3兼容!

先决条件

注册应用程序

要开始使用sdk,必须有一个应用程序 注册地:developers.facebook.com

要管理营销API,请访问 应用程序仪表板 并将营销API产品添加到您的应用程序中。

重要信息:为了安全起见,建议您打开"应用程序机密" 应用程序设置中的"服务器API调用证明"->;"高级"页。

获取访问令牌

当有人使用Facebook登录连接应用程序并批准请求时 对于权限,应用程序获取一个访问令牌,该令牌提供临时的、安全的 访问Facebook API。

访问令牌是一个不透明的字符串,用于标识用户、应用程序或页面。

例如,要访问营销api,需要生成用户访问令牌 为您的应用程序请求ads_management权限;以访问页面api, 您需要为您的应用程序生成一个页面访问令牌,并请求管理页面权限。

参考我们的 访问令牌指南了解更多信息。

现在,我们可以使用 图形资源管理器 获取访问令牌。

安装软件包

安装sdk最简单的方法是在shell中通过pip来实现。

注意:对于python3,请改用pip3python3

注意:如果有人抱怨权限问题,请使用sudo。(可能) 如果您使用的是系统安装的python,则会发生这种情况。)

如果没有pip:

easy_install pip

现在执行pip:

pip install facebook_business

如果您需要最新版本而不是 pypi.python.org存储库, 查看 从github下载存储库或下载发布tarball。一旦你得到了 软件包已下载并解压缩,请安装:

python setup.py install

太好了,现在您可以使用sdk了!

引导

创建test.py

创建包含以下内容的test.py文件(假设您的系统使用Python2.7并安装在/opt/homebrew下)。更新到正确的python位置。):

importsyssys.path.append('/opt/homebrew/lib/python2.7/site-packages')# Replace this with the place you installed facebookads using pipsys.path.append('/opt/homebrew/lib/python2.7/site-packages/facebook_business-3.0.0-py2.7.egg-info')# same as abovefromfacebook_business.apiimportFacebookAdsApifromfacebook_business.adobjects.adaccountimportAdAccountmy_app_id='your-app-id'my_app_secret='your-appsecret'my_access_token='your-page-access-token'FacebookAdsApi.init(my_app_id,my_app_secret,my_access_token)my_account=AdAccount('act_<your-adaccount-id>')campaigns=my_account.get_campaigns()print(campaigns)

测试您的安装

使用以下命令测试安装:

pythontest.py

你应该在终端窗口看到结果。如果它抱怨令牌已过期,请重复上述"先决条件"部分中描述的请求页面访问令牌的过程。

注意:在本教程的其余部分中,我们将使用objects模块。你可以 也可以直接使用adobjects下的各个类文件。

了解积垢

sdk实现了crud(创建、读取、更新、删除)设计。物体 与探索图形相关的位于 Facebook商业套餐。

图中的所有对象都是abstractobject的实例。有些物体可以 直接查询,因此是abstractcrudobject的实例(一个子类 抽象对象。这两个抽象类都位于 facebook\u business.adobjects

facebook\u business下有一个附加文件夹adobjects。在这下面你会看到每个广告对象的文件 在我们的营销API中。这些文件是从我们的api自动生成的,因此 与api所能提供的功能相当。基于什么是crud操作 在每个对象上执行时,您将看到其中存在以下方法:

  • API获取
  • API更新
  • API删除
  • 创建xxx
  • 获取xxx

例如,campaign有所有这些方法,但adaccount没有。阅读 有关详细信息的市场营销API文档 广告有多不同 使用对象

abstractcrudobject中有一些不推荐使用的函数,如

  • 远程创建
  • 远程读取
  • 远程更新
  • 远程删除

请停止使用它们,因为我们可能会计划很快弃用它们。

浏览图表

sdk抽象api的方式是通过定义表示对象的类 在图表上。这些类定义及其帮助程序位于 facebook\u business.adobjects

初始化对象

看看abstractobject和abstractcrudobject方法 更多信息。图形子类上的大多数对象都来自这两个对象中的一个。

当实例化一个ad对象时,如果它已经存在,则可以指定它的id 定义fbid参数。另外,如果您想与 使用特定的api对象而不是默认的api,可以指定 api参数。

边缘

看看一个对象的方法,看看我们可以通过什么关联 迭代。例如,aduser对象有一个方法 返回adaccount对象的迭代器。

广告账户

大多数与广告相关的操作都在广告帐户的上下文中。你可以去 广告管理器查看帐户 你有权这么做。你们大多数人可能都有个人帐户。

让我们获取具有给定访问令牌的用户的所有广告帐户。我只 拥有一个帐户,以便打印以下内容:

>>>me=adobjects.AdUser(fbid='me')>>>my_accounts=list(me.get_ad_accounts())>>>print(my_accounts)[{'account_id':u'17842443','id':u'act_17842443'}]>>>type(my_accounts[0])<class'facebook_business.adobjects.AdAccount'>

警告:我们不指定关键字参数api=当实例化时 这里的aduser对象是因为我们已经在 引导。

注意:我们用list()包装get_ad_accounts的返回值 因为get_ad_accounts返回一个edgeiterator对象(位于 facebook\u business.adobjects)我们希望立即获得完整的列表,而不是 让迭代器懒洋洋地加载帐户。

为了我们的目的,我们可以选择一个帐户并在它的 语境:

>>>my_account=my_accounts[0]

或者如果您已经知道您的帐户ID:

>>>my_account=adobjects.AdAccount('act_17842443')

创建

让我们创建一个活动。它在账户的上下文中,即其母公司 应该是帐户。

fields=[]params={adobjects.Campaign.Field.name:'Conversions Campaign',adobjects.Campaign.Field.configured_status:adobjects.Campaign.Status.paused,}campaign=AdAccount(id).create_campaign(fields,params)

然后我们将详细介绍这个活动。找出什么属性 要定义,应该查看对象的可用字段(位于 campaign.field)并查看广告对象的文档(例如 活动)。

注意:要查找字段,请查看adobjects下的单个类文件 目录。

如果有错误,将引发异常。可能的例外及其 有关说明,请参见facebook\u business.exceptions

阅读

我们还可以从api中读取对象的属性,前提是 已创建并具有节点路径。访问对象的属性是 很简单,因为abstractobject实现了collections.mutablemapping。 您可以像访问字典的键一样访问它们:

easy_install pip
0

更新

要更新对象,可以修改其属性,然后调用 api_update方法将对象与服务器同步。让我们纠正 将"Campain"键入"Campaign":

easy_install pip
1

您可以在广告管理器中看到结果。

删除

如果我们决定不再需要我们创建的活动:

easy_install pip
2

有用的参数

多个访问令牌

在整个文档中,在进行任何api调用之前都会调用方法facebookadsapi.init。这个 方法设置要在任何地方使用的默认facebookadsapi对象。简化了使用 但当使用sdk的系统代表多个用户进行调用时,这是不可行的。

这不可行的原因是因为每个用户都应该有自己的facebooksession,有自己的facebooksession 访问令牌,而不是对每个会话使用相同的会话。每个会话都应用于创建 分离FaceBookADSAPI对象。请参见下面的示例:

easy_install pip
3

在sdk示例中,我们总是将单个facebookadsapi对象设置为默认对象。 但是,使用multiples access_令牌需要使用multiples api。我们可以设定违约 对于用户的api,但是对于其他用户,我们将使用它的api对象作为参数。在下面的例子中, 我们创建两个aduser,第一个使用默认api,第二个使用其api对象:

easy_install pip
4

从上面创建相同对象的另一种方法是:

easy_install pip
5

从这里开始,这些对象的所有以下工作流保持不变。唯一的例外是 classmethods调用,我们现在应该在这里传递要用作最后一个参数的api 每次通话。例如,对aduser.get_by_ids方法的调用应该如下:

easy_install pip
6

积垢

所有crud调用都支持一个带字典的关键字参数 在需要高级修改时将参数名映射到值。你 可以将参数名列表作为 {对象类}.field。在field类下面可能还有其他类 其中包含作为属性的父级值的有效字段 属性。

api_updatecreate_xxx支持afiles关键字参数 它接受一个字典,将文件引用名映射到二进制打开的文件 对象。

api-get支持一个字段的关键字参数,这是一种方便的方法 指定"fields"参数。字段获取字段列表 应该在通话中阅读。有效字段可以作为 类字段。

边缘

当初始化edgeiterator或调用 adaccount.get\u广告活动

  • 您可以指定一个字段参数,该参数接受要读取的字段列表 正在读取的对象。
  • 您可以指定一个params参数,它可以帮助您指定或筛选 边缘更精确。

批量调用

将大量调用组合到一个http请求中是有效的。 sdk使这个过程变得简单。您可以将调用组合到一个实例中 (facebook\business.api中提供)。容易得到 对于您的api实例:

easy_install pip
7

调用可以添加到批处理中,而不是立即执行:

easy_install pip
8

完成向批处理添加呼叫后,您可以发送请求:

easy_install pip
9

请按照 市场营销API文档中的批量调用指南。有最优的 每批呼叫数。另外,你可能需要注意这个价格 限制为批处理调用只会提高网络性能,而每个调用都会 单独计数以达到速率限制。

例外情况

有关可能引发的异常列表,请参见 SDK.

测试

单元测试

单元测试不需要访问令牌或网络访问。运行它们 使用默认安装的python,如下所示:

pip install facebook_business
0

您还可以使用tox运行具有多个python版本的单元测试:

pip install facebook_business
1

您可以通过安装 蟒蛇。在ubuntu上你可以使用 死蛇ppa。 在其他发行版上,您可以 从源代码构建,然后使用 sudo make altinstall以避免与安装的系统发生冲突 版本:

示例

用法示例位于examples/文件夹中。

调试

如果此sdk不能按预期工作,则可能是sdk问题或api问题。

这可以通过构造一个原始curl请求并查看响应是否如预期的那样来确定

例如:

pip install facebook_business
2

运行此代码时,此curl请求将打印到控制台:

pip install facebook_business
3

sdk代码生成

我们的sdk是从sdk codegen中自动生成的。如果您想了解有关如何生成sdk代码的更多信息,请检查此存储库。

问题

由于我们希望更有效地处理错误,我们决定关闭github中的问题报告,并转到我们专用的错误报告通道。 如果您在使用business sdk(python)时遇到错误,请在我们的开发者错误报告频道中报告此问题。

许可证

facebook business sdk for python的许可证文件位于此源树的根目录下。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java对ServiceListener和ServiceTracker调用提供了哪些排序保证?   java找不到方法格式的符号(DateTimeFormatter)?   mysql有没有一种方法可以将TCPDump输出到一个文件中,并用Java对其进行过滤,每5秒钟用新数据覆盖一次该文件?   java如何最好地配置用户上传支持文件的上传位置   java我在Android上使用OData4j,我无法获取实体   JPA实体关系简单示例中的java获取错误   JAVANoClassDefFoundError:安卓。应用程序。用法安卓中的UsageStatsManager   Eclipse中javaoo代码分析   java MethodVisitor抛出类格式错误   java为什么在从ViewModel调用时,改型排队不起作用?   调试小程序Java控制台:删除跟踪消息大小限制   java复杂安卓活动动画   java如何在使用JDOM2解析XML时忽略注释内容   java通过循环创建文本字段   即使在bufferedwriter关闭后也未发现java文件异常   单链表恢复中的java错误