我原以为这是直截了当的,但由于某种原因,我在这一点上受到了打击。
我正在使用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未启用
启用:- 进入https://console.developers.google.com
- 点击左上角的菜单图标
- 从菜单中单击
API Manager
- 在搜索栏中搜索您的API(例如YouTube Data API v3)并单击它 进入该API的子页面后,单击左上角中的启用
删除所有"允许的IP ",则Any IP allowed
我尝试了上面列出的解决方案,但没有得到结果。YouTube, Dialogflow和Google+的API集成在几个月前就已经不活跃了。
最后唯一的解决办法是:
- 新建项目
- 创建新密钥
- 复制应用限制下的IPv4和IPv6地址
- 根据应用程序的需要更新API限制
对于任何收到类似错误但不知道实际问题是什么的人,请确保设置
curl_setopt($ch, CURLOPT_FAILONERROR, false);