サーバー間: 入札統合のトラブルシューティング

自社メディエーションは一般公開されません

Audience Networkによる自社入札は、現時点で非公開ベータ版であり、一般公開されません。この状況が変化した時点で、アップデートが提供される予定です。

それまでの間、Facebookとパートナー関係にあるメディエーションプラットフォームのうちのいずれか1つにより、Audience Network入札にアクセスできます。

サーバー間の入札統合が終了したら、アプリ入札の統合テスト は、本番広告が掲載されている物理的なデバイスで完了させる必要があります。HTTPエラーや「入札なし」が表示される場合は、このセッションの情報を活用して実装のトラブルシューティングを行うことができます。

前提条件

セクション

cURLを使用した入札リクエストのデバッグ

HTTP エラーコードの説明と入札リクエストの解決策

「入札なし」のトラブルシューティング

cURLを使用した入札リクエストのデバッグ

入札リクエストをデバッグするために、cURLコマンドを利用することができます。cURLコマンドは、ターミナルで入札リクエストを送信したり、入札応答を受信したりするために使用できます。

ステップ1.入札リクエストのインタースティシャル広告のJSONペイロード

  • YOUR_PLACEMENT_ID をあなたの配置IDに置き換えます
  • YOUR_BUSINESS_ID をあなたのビジネスIDに置き換えます
  • YOUR_DEVICE_ID をあなたのデバイスIDに置き換えます
  • YOUR_BIDDER_TOKEN を、Audience Network SDKから生成された入札者トークン に置き換えます
  • YOUR_PLATFORM_ID をメディエーションパートナープラットフォームID (FBアプリID)に置き換えます
  • 別の広告フォーマットでテストしたい場合は、「サポートされている広告フォーマット」を参照してください。
  • 以下のJSON ペイロードを bid_request.jsonとして保存します
{
"id": "vwxfKskkMobzQQ1e7M70",
"imp": [
{
"id": "FB Ad Impression",
"tagid": "YOUR_PLACEMENT_ID",
"instl": 1,
"banner": {
"h": 0,
"w": 0,
"linearity": 0
}
}
],
"app": {
"publisher": {
"id": "YOUR_BUSINESS_ID"
}
},
"device": {
"ua": "Dalvik\/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build\/OSM1.180201.000)",
"ifa": "YOUR_DEVICE_ID",
"dnt": 0,
"ip": "125.123.255.123"
},
"user": {
"buyeruid": "YOUR_BIDDER_TOKEN"
},
"regs": {
"coppa": 0
},
"at": 1,
"tmax": 500,
"test": 1,
"ext": {
"platformid": "YOUR_PLATFORM_ID"
}
}

ステップ2.cURLコマンドで入札リクエストを送信する

  • Terminalを開きます
  • cd ~/{FILE_PATH}を実行し、bid_request.json を保存したディレクトリへ移動します
curl -X POST -H "Content-Type: application/json" -d @bid_request.json https://an.facebook.com/placementbid.ortb

ステップ3.入札リクエストが有効な場合の入札応答の確認

{
"id": "Auction ID",
"seatbid": [
{
"bid": [
{
"id": "Bid Response ID",
"impid": "FB Ad Impression",
"price": 99.99,
"adm": "{\"type\":\"ID\",\"bid_id\":\"BID ID\",\"placement_id\":\"Placement ID\",\"resolved_placement_id\":\"Resolved Placement ID\",\"sdk_version\":\"SDK Version\",\"device_id\":\"Device ID\",\"template\":102,\"payload\":null}",
"nurl": "https://www.facebook.com/audiencenetwork/nurl/?partner=partner_id&app=app_id&placement=placement_id&auction=auction_id&impression=impression_id&request=request_id&bid=bid_id&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}",
"lurl": "https://www.facebook.com/audiencenetwork/nurl/?partner=partner_id&app=app_id&placement=placement_id&auction=auction_id&impression=impression_id&request=request_id&bid=bid_id&ortb_loss_code=${AUCTION_LOSS}&clearing_price=${AUCTION_PRICE}"
}
]
}
],
"bidid": "Bid ID",
"cur": "USD"
}

ステップ4.上記の入札リクエストを受け取らなかった場合、HTTPレスポンスヘッダーの中のx-fb-an-errors を参照してください。

cURL コマンドでHTTP応答ヘッダーを表示します。

url -X POST -H "Content-Type: application/json" -v @bid_request.json https://an.facebook.com/placementbid.ortb
...
> Content-Type: application/json
>
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
< HTTP/2 400
< x-fb-an-request-id: fb_an_request_id
...
< x-fb-an-errors: Value cannot be null: value given: null
...

入札リクエストを修正する場合は、「HTTP エラーコードの説明と入札リクエストの解決策」を参照してください。

HTTP エラーコードの説明と入札リクエストの解決策

入札の実装をテストする際、入札リクエストを行ったときに、エラーコードが表示されることがあります。エラーコードと解決策は以下のとおりです。

400応答: 無効なパラメーターエラー

エラーメッセージ 説明 解決策

user.buyeruidの無効な入札者トークン

user.buyeruid の入札者トークンが無効です。

有効な入札者トークンの生成方法:

  • Android - BidderTokenProvider.getBidderToken(context);

  • iOS — [FBAdSettings bidderToken];

ipaddressは有効なIPアドレスである必要があります

入札リクエストペイロードの device オブジェクトで、ip(v4) または ipv6 フィールドに有効なIPアドレスを記入する必要があります。

正しい例:

  • ip(v4): 255.255.255.0

  • ipv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

正しくない例: (IPを省略しないでください)

  • ip(v4): 255.255.255

  • ipv6: 2001:0db8:85a3:0000:0000:8a2e

有効な配置IDが必要です

imp.tagid のフィールドに、有効なAudience Network配置IDを記入する必要があります。

ビジネスマネージャで配置IDを確認してください。[プロパティの管理]を選択し、AndroidまたはiOSプラットフォームの広告スペースの下にある、配置IDを見てください。

パブリッシャーIDがアプリのリクエストに設定されていません

リクエストでapp.publisher.id のフィールドが設定されていません。

[ビジネス設定]で、あなたのパブリッシャーIDを確認してください。左側のメニューで[アプリ]を選択し、アプリID(パブリッシャーID)を探します。

すべての配置IDは同じアプリIDに属している必要があります

メッセージに示されているように、入札リクエストに含まれるすべてのAudience Network 配置IDは、同じアプリIDに属している必要があります。

ビジネスマネージャで、入札リクエストの中のすべての配置IDが、同じアプリIDに属しているかどうかを確認してください。[プロパティの管理]を選択し、AndroidまたはiOSプラットフォームの広告スペースの下にある、配置IDを見てください。

オプションではない、またはNULLにできない形成フィールドに値が指定されていません

入札リクエストに必須の値が指定されていません。

必須の値:

  1. id

  2. impimp.tagidimp.id

  3. app.publisherapp.publisher.id

  4. device

  5. extext.platformid

  6. at - Enum (1, 2)値が必須

広告フォーマットは必須です。広告フォーマットと配置IDの数値は同じである必要があります

空白以外の有効な広告フォーマットを指定してください。

サポートされている広告フォーマット:

  • ネイティブフォーマット: {'id': ${AUCTION_ID}, "native": { "h": -1, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • ネイティブバナーフォーマット: {'id': ${AUCTION_ID}, "native": { "h": -1, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • インタースティシャルフォーマット: {'id': ${AUCTION_ID}, "banner": { "h": 0, "w": 0 }, 'tagid': ${PLACEMENT_ID}, 'instl': 1}

  • リワード動画フォーマット: {'id': ${AUCTION_ID}, "video": { "h": 0, "w": 0, 'ext': { 'videotype': 'rewarded' } }, 'tagid': ${PLACEMENT_ID}}

  • バナーフォーマット - 高さ 50: {'id': ${AUCTION_ID}, "banner": { "h": 50, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • バナーフォーマット - 高さ 250: {'id': ${AUCTION_ID}, "banner": { "h": 250, "w": -1 }, 'tagid': ${PLACEMENT_ID}}

  • インストリーム動画フォーマット: {'id': ${AUCTION_ID}, "video": { "h": 0, "w": 0, 'linearity': 1 }, 'tagid': ${PLACEMENT_ID}}

詳細は、サポートされている広告フォーマット を参照してください

バナー、ネイティブ、ビデオの各オブジェクトは同時に使用することはできませんが、いずれか1つを指定する必要があります

上記の広告フォーマットには、nativebannervideoといった、それぞれ異なるオブジェクトがあります。エンドポイントでは、この3つのオブジェクトのうちいずれか1つが 必要です。ただし、これらを同時に使用することはできないことに注意してください。

上記の サポートされている広告フォーマット の解決策を参照してください。

400応答: 一致しないユーザーまたは無許可のエラー

エラーメッセージ 説明 解決策

ドメインおよびビジネスIDに一致するアプリがありません

app.publisher.id のフィールドのビジネスIDを使用している場合、ドメインとビジネスではバックグラウンドでアプリを検出することができません。

このエラーが解決されない場合は、app.publisher.idフィールドでアプリIDを使用してください。

アプリがアプリ入札に対して認証されません

app.publisher.idのアプリIDが入札許可リストに載っていないか、アプリがレビューの承認待ちです。

アプリを入札許可リストに追加するには、Facebookにお問い合わせいただくか、アプリが承認されるまでお待ちください。

プラットフォームがアプリ入札で認証されません

ext.platformidのプラットフォームIDが、入札許可リストに載っていません。アプリIDが入札許可リストに載っていて、レビューの承認待ちではないことをご確認ください。

解決策:

  1. パブリッシャーの場合、アプリIDはプラットフォームIDと同じです。

  2. パートナーの場合、パブリッシャーは ext.platformid(パートナーアプリID) と app.publisher.id (パブリッシャーアプリ ID)に異なる値を入力します。

アプリを入札許可リストに追加するには、Facebookにお問い合わせいただくか、アプリが承認されるまでお待ちください。

予期せぬエラー

理由:

  1. アプリ/ユーザースロットリング。

  2. アプリケーションが拒否されています。

  3. 信頼できないインストーラー。

  4. 不正なリクエスト。

解決策:

  1. 広告の再読み込みの頻度を下げてください。

  2. アプリのステータスを確認するには、Facebookにお問い合わせください。

  3. アプリは必ず信頼できるアプリストアからインストールしてください。

  4. このエラーが解決されない場合は、Facebookにお問い合わせください。

204応答: 空のエラーメッセージ

エラーメッセージ 説明 解決策

入札応答の x-fb-an-errors のエラーヘッダーが空です

理由:

  1. dnt: 1 (Do-Not-Track)に設定されている場合、Facebookは入札しません。

  2. インタースティシャル広告フォーマットでimp.instl が指定されていません。

  3. Facebook はオークションに参加しませんでした。

解決策:

  1. ユーザーがデバイスで広告トラッキングを有効にし、その後クライアントが入札リクエストでdnt: 0 (Do-Not-Track)を渡す必要があります。そうすれば、Facebookは入札します。

  2. インタースティシャル広告で入札を行うには、imp.instlフィールドに1が指定されていることを確認してください。

204 応答が表示され続ける場合は、Facebookにお問い合わせください。

「入札なし」のトラブルシューティング

  • エラーの原因を特定するために、必ずx-fb-an-errors HTTP ヘッダーを取得し、ログに記録してください。
  • アプリを実行しているデバイスにFacebookアプリがインストールされており、実際のユーザーアカウントでFacebookにログインしていることを確認してください。偽アカウントやテスト用のFacebookのユーザーアカウントの使用は、Facebookのポリシーに違反しており、こうしたアカウントは無効にされます。
  • Androidの場合はcom.facebook.ads.BidderTokenProvider.getBidderToken()、iOSの場合は [FBAdSettings bidderToken] を呼び出し、返された文字列を入札リクエストの buyeruid フィールドに送信することによって、Audience Network SDKから入札者トークンを取得していることを確認してください。
  • 入札リクエストのifa フィールドに正しいデバイスIDを送信していることを確認してください(Androidの場合は AdvertisingIdClient.getAdvertisingIdInfo(context).getId()、iOSの場合は [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString])。
  • ご使用のデバイスでDo-Not-Track(dnt)が無効にされており、入札リクエストで dnt: 0 (do-not-track) が渡されることを確認してください。