无论我做什么都无法让 Google Ads 在 React 中显示

Jas*_*enX 5 javascript adsense reactjs

我一直在关注这个例子:

https://www.jamesbaum.co.uk/blether/using-google-adsense-with-react/

我有这个组件:

import React from "react";

export default class AdBanner extends React.Component {
    componentDidMount () {
        (window.adsbygoogle = window.adsbygoogle || []).push({});
    }

    render () {
        return (
            <div className='ad'>
                <ins className='adsbygoogle'
                     style={{ display: 'block' }}
                     data-ad-client='div-gpt-ad-1536172937182-0'
                     data-ad-slot='/164808479/Leaderboard'
                     data-ad-format='auto' />
            </div>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

我的index.html

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
Run Code Online (Sandbox Code Playgroud)

当我运行测试页面时,我没有看到广告渲染并出现以下错误:

在此输入图像描述

我不知道这个错误意味着什么或如何解决它。

值得一提的是,客户端和插槽 ID 在非反应测试应用程序中完美工作,因此这里肯定还有其他问题。

另外,我正在通过 localhost:8080 进行测试——它适用于非反应测试应用程序,所以我不认为这是本地主机/谷歌广告问题。

在我们旧的非反应应用程序中

在我们的<header>

<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
    <script>
        var googletag = googletag || {};
        googletag.cmd = googletag.cmd || [];
    </script>

    <script>
        googletag.cmd.push(function() {
            googletag.defineSlot('/164808479/Leaderboard', [728, 90], 'div-gpt-ad-1536172937182-0').addService(googletag.pubads());
            googletag.pubads().enableSingleRequest();
            googletag.enableServices();
        });
    </script>
Run Code Online (Sandbox Code Playgroud)

在我们的<page.php>

<!-- /164808479/Leaderboard -->
        <div id='div-gpt-ad-1536172937182-0' style='height:90px; width:728px;'>
            <script>
                googletag.cmd.push(function() { googletag.display('div-gpt-ad-1536172937182-0'); });
            </script>
        </div>
Run Code Online (Sandbox Code Playgroud)

现在,即使是127.0.0.1:80(通过 Docker 运行),这也会产生一个有效的广告。我们的问题是,我们缺乏在 React 组件中使其工作的能力。

Meh*_*lan 2

您收到 HTTP 400(即错误请求),因为发送到 Google 广告服务器的数据似乎有误。

该值的格式应类似于从 AdSense 管理页面获取的data-ad-client格式。ca-pub-00000000000000我相信这不是你的情况!!!

您提供的数据div-gpt-ad似乎是div具有 id 的 google 发布商标签的 id /164808479/Leaderboard。因此,为了在您的反应应用程序中正确使用它,您可以使用这个库: https: //github.com/nfl/react-gpt

因此,您可以在下面找到适合您的情况的修改后的代码。只需添加react-gpt到您的反应应用程序中即可。

import React from "react";
import {Bling as GPT} from "react-gpt";

GPT.enableSingleRequest();

export default class AdBanner extends React.Component {
    render () {
        return (
            <div id="div-gpt-ad-1536172937182-0">
                <GPT
                    adUnitPath="/164808479/Leaderboard"
                    slotSize={[728, 90]}
                />
            </div>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在此链接中看到上述代码运行良好:https://codesandbox.io/embed/dependent-bash-k30nq