1

我面临着请求 Bing Ads API 从中获取几个指标的挑战。我正在使用托管在远程 Kubernetes 集群上的 Apache Airflow DAG 来执行此操作。这是自动化和安排任务的好方法。

现在,文档对获取 API 的访问权的问题相当简单。

我已关注此https://docs.microsoft.com/en-us/advertising/guides/authentication-oauth-identity-platform?view=bingads-13#registerapplication 和官方 SDK 文档https://github.com/ BingAds/BingAds-Python-SDK/

我在查询时无法进行身份验证,因为我缺少几条信息。

使用“刷新令牌”和“重定向 URI”进行身份验证时,我也没有。(此处为 OAuthWebAuthCodeGrant 类:https ://github.com/BingAds/BingAds-Python-SDK/blob/294d01eea57d80ba381a42cde8d006fc318af056/bingads/authorization.py#L566 )

使用其他方法时(此处为 OAuthDesktopMobileAuthCodeGrant 类:https ://github.com/BingAds/BingAds-Python-SDK/blob/294d01eea57d80ba381a42cde8d006fc318af056/bingads/authorization.py#L532 ),我失败了/

AADSTS700016: Application with identifier '<someidentifier>' was not found in the directory '<somethingelse>'. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You may have sent your authentication request to the wrong tenant.

非常感谢您!如果您需要更多详细信息,请告诉我!

一般来说,还有很棒的文档,如果我能让它对“newb”更友好,请告诉我!

Edit1:
可悲的是,虽然这个问题有一些流量,但似乎没有人能够回答。
我将进一步指定设置。

我们使用 Airflow DAG 从 API 请求每日更新。为此,我们需要进行身份验证。身份验证每次都来自“新设备”,因为代码在 k8s 集群上运行,该集群将作业动态分配给它的 pod。
对于身份验证,我们尝试了不同的解决方案,但都需要某种形式的人工交互才能将刷新令牌放入 DAG。

是否有任何解决方案允许像多服务器到服务器通信这样的免提守护程序?
此链接阐明了我们正在寻找的内容:https ://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-daemon-app-registration#api-permissions---app-权限和管理员同意 遗憾的是,Bing Ads API 没有出现在那里。

我们缺少哪些关键信息?

4

1 回答 1

1

Bing Ads 与 Google Ads 一样,将 OAuth 用于其 API。

如果您参考Getting Started 页面,它会提到您需要一个开发人员令牌,并附有链接。

您可以按照以下步骤获取用于生产的开发人员令牌。

  1. 在Microsoft Advertising Developer Portal帐户选项卡上使用超级管理员凭据登录。

  2. 选择您希望与开发人员令牌关联的用户。通常,无论支持多少用户,应用程序只需要一个通用令牌。

  3. 单击请求令牌按钮。

关于您的特定场景——在没有接口的云中运行的应用程序——您应该知道 OAuth 需要您与之交互才能进行设置。因此,在本地运行您的应用程序一次,或者至少从您的语言演练中运行 getting_started 代码:https ://docs.microsoft.com/en-us/advertising/guides/walkthrough-desktop-application-python?view=bingads-13

在本地运行它将通过您的浏览器进行身份验证过程并生成一个刷新令牌(refresh.txt默认情况下在文件中)。将此文件与您的代码一起存储。它必须在发出请求的服务器上,并且由于它在 Kubernetes 中,因此您必须将其与容器文件一起保存。

于 2021-04-19T11:35:53.110 回答