我尝试使用Microsoft认知服务中的Computer Vision API。但是,我的钥匙似乎不起作用。我使用该API的免费试用版创建了一个帐户,并从中获取了两个密钥。尝试使用ProjectOxford.Vision SDK的密钥始终会产生:
Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription.
我尝试了API console,但是我的Ocp-Apim-Subscription-Key
字段中的密钥出现了同样的错误。我尝试了两个按键,但两个都没有工作。我甚至获得了免费版Face API并尝试了它的console,但遇到了与其密钥相同的问题。我甚至尝试过不同的数据中心,但它们似乎都返回了相同的错误。
这需要是钥匙的问题吗?这可能是我的C#代码的问题,因为控制台也无法正常工作。既然它在API控制台中失败了,我还能做什么来排除任何其他可能性呢?我不确定我还能做些什么来调试这个。我想重新生成我的密钥(我看到一个教程视频显示了获取API密钥的旧UI,他们曾经有过#34;重新生成"链接)但我不明白这样做的方式。
我刚刚创建了帐户并注册了API,因此我无法超过配额。我还需要做些什么来启用这些密钥或其他东西吗?
答案 0 :(得分:2)
我设法绕过了“拒绝访问”的问题。通过执行以下操作:
使用新密钥,我必须使用以下链接: https://westus.api.cognitive.microsoft.com/vision/v1.0/ocr
而不是
https://westus.api.cognitive.microsoft.com/vision/v1.0/recognizeText
(我从认知服务测试仪表板获得此链接)。
查看测试仪表板上的请求模式,您应该能够告诉如何使用api。
答案 1 :(得分:2)
即使@Xuan Hu响应正确地说明了解决方案,我还是试着弄清楚如何改变终点。这是我的2美分:
转到portal.azure.com,在您订阅认知服务的仪表板中>一般信息>终点记下URL。你需要它。
在VisionAPI示例中查找VisionServiceClient实例化的代码:
VisionServiceClient VisionServiceCliente = new VisionServiceClient(SubscriptionKey);
并更改包括您在Azure中找到的网址:
VisionServiceClient VisionServiceCliente = new VisionServiceClient(SubscriptionKey, StringOfMyURLTakedFromPortal);
这对我有用。
答案 2 :(得分:1)
如果您使用的是从azure.microsoft.com获得的免费试用密钥。您需要将API端点区域更改为westcentralus
。之前的默认区域是westus
,我认为这是无效密钥问题的原因。
答案 3 :(得分:1)
仅供参考,有一篇博客文章涵盖了所有401 Access Denied场景,包括关于免费API密钥和区域特定API端点的场景。将此添加到将来发现此SO帖子的人 - https://blogs.msdn.microsoft.com/kwill/2017/05/17/http-401-access-denied-when-calling-azure-cognitive-services-apis/。
使用错误的区域端点
大多数Cognitive Services API都是特定于区域的,这意味着在创建API帐户期间,您可以选择要在其中创建帐户的区域。这些API具有特定于区域的端点,例如westus.api.cognitive.microsoft.com或eastus2.api.cognitive.microsoft.com以及在一个区域中创建的帐户的API密钥仅适用于该特定区域的端点。这意味着,如果您在美国西部创建API帐户,则无法调用eastus2.api.cognitive.microsoft.com API端点。
您可以在Azure管理门户中验证区域和端点。
试用API密钥
免费试用版API密钥有30天的到期日期,对区域和版本的限制相同。如果您使用的是试用密钥,则可以转到https://azure.microsoft.com/en-us/try/cognitive-services/my-apis/来管理您的API密钥(如果您尚未登录,则只需单击“创建”按钮之一,您就可以通过向导登录并查看您现有的API密钥),您还将看到到期日期和终点。
答案 4 :(得分:0)
如果要使用Postman来获取结果,要记住的一件事是使用GET并将密钥放在Header中。