http状态码403 -谷歌API返回访问未配置



我原以为这是直截了当的,但由于某种原因,我在这一点上受到了打击。

我正在使用PHP + CURL尝试检索Web字体列表。代码很简单:

        $url = "https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity&key=MY_SERVER_APPS_KEY";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $google_response = curl_exec($ch);
        curl_close($ch);            

代码正在点击Google,但是$google_response总是返回:

"error": {
    "code": 403,
    "errors": [
        {
            "domain": "usageLimits",
            "reason": "accessNotConfigured",
            "message": "Access Not Configured"
        }
    ],
    "message": "Access Not Configured"
}

我已经设置了一个服务器访问密钥,并将我的web服务器的API密钥放在它上面。(为了验证我的IP,我在curlmyip.com上做了一个WGET)我还从服务选项卡中启用了"Web Fonts Developer API"。

有什么我可以忽略的吗?

我找到了解决方案。显然,我需要注册我的服务器的IPv6地址,而不是IPv4的。

在我的例子中所需的API未启用

启用:

  1. 进入https://console.developers.google.com
  2. 点击左上角的菜单图标
  3. 从菜单中单击API Manager
  4. 在搜索栏中搜索您的API(例如YouTube Data API v3)并单击它
  5. 进入该API的子页面后,单击左上角中的启用

删除所有"允许的IP ",则Any IP allowed

我尝试了上面列出的解决方案,但没有得到结果。YouTube, Dialogflow和Google+的API集成在几个月前就已经不活跃了。

最后唯一的解决办法是:

  • 新建项目
  • 创建新密钥
  • 复制应用限制下的IPv4和IPv6地址
  • 根据应用程序的需要更新API限制

对于任何收到类似错误但不知道实际问题是什么的人,请确保设置

curl_setopt($ch, CURLOPT_FAILONERROR, false);
,以便接收一个有效的CURL响应,其中包括来自Google的错误描述。

相关内容

  • 没有找到相关文章

最新更新