Microsoft 认知服务 - 计算机视觉:无效的订阅密钥
Microsoft Cognitive Services - Computer Vision: Invalid Subscription Key
我正在尝试使用 Computer Vision API from Microsoft's Cognitive Services. However, my keys don't seem to be working. I created an account using the free trial of that API and got the two keys from it. Trying to use the key with the ProjectOxford.Vision SDK 始终产生:
Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription.
我尝试了 API console, however I get the same error with my key in the Ocp-Apim-Subscription-Key
field. I tried both keys and neither of them work. I even got the free version of Face API and tried its console,但它的键遇到了同样的问题。我什至尝试了不同的数据中心,但它们似乎都 return 相同的错误。
这应该是密钥有问题吧?这不是我的 C# 代码的问题,因为控制台也不起作用。而且由于它在 API 控制台中失败,我无法做更多的事情来排除任何其他可能性吗?我不确定我还能做些什么来调试它。我想重新生成我的密钥(我看到了一个教程视频,其中显示了一个较旧的 UI 获取 API 密钥并且它们曾经有一个 "regenerate" link)但是我再也看不到这样做的方法了。
我刚刚创建了帐户并注册了 APIs,所以我不可能超过配额。我还需要做些什么来启用这些键吗?
我通过执行以下操作设法绕过了 'Access Denied' 问题:
- 我创建了一个免费的 Azure 帐户
- 我设置了一个认知服务实例Api(这生成了一对新密钥供我使用)
利用新密钥,我不得不使用以下 link:
https://westus.api.cognitive.microsoft.com/vision/v1.0/ocr
而不是
https://westus.api.cognitive.microsoft.com/vision/v1.0/recognizeText
(我从认知服务测试仪表板获得此 link)。
查看测试仪表板上的请求模式,您应该能够知道如何使用 api。
如果您使用的是从 azure.microsoft.com 获得的免费试用密钥。您需要将 API 端点区域更改为 westcentralus
。以前的默认区域是westus
,我认为这是无效密钥问题的原因。
即使@Xuan Hu 对解决方案的回应是正确的,我还是挠了挠头想弄清楚如何更改终点。这是我的 2 美分:
转到 portal.azure.com,在您订阅认知服务的仪表板 > 一般信息 > 端点中记下 URL。你需要它。
在实例化 VisionServiceClient 的 VisionAPI 示例代码中查找:
VisionServiceClient VisionServiceCliente = new VisionServiceClient(SubscriptionKey);
并进行更改,包括您在 Azure 中找到的 URL:
VisionServiceClient VisionServiceCliente = new VisionServiceClient(SubscriptionKey, StringOfMyURLTakedFromPortal);
这对我有用。
仅供参考,有一个博客 post 涵盖了所有 401 访问被拒绝的场景,包括这个关于免费 API 密钥和区域特定 API 端点的场景。将它添加到这里供将来发现此 SO post - https://blogs.msdn.microsoft.com/kwill/2017/05/17/http-401-access-denied-when-calling-azure-cognitive-services-apis/.
的人们使用
使用不正确的区域端点
大多数认知服务 API 都是区域特定的,这意味着在 API 帐户创建过程中,您 select 您想要在哪个区域创建帐户。这些 APIs 具有区域特定的端点,例如 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 密钥),您还将看到到期日期和端点。
如果使用 Postman 获取结果,需要记住的一件事是使用 GET 并将您的密钥放入 Header。
我正在尝试使用 Computer Vision API from Microsoft's Cognitive Services. However, my keys don't seem to be working. I created an account using the free trial of that API and got the two keys from it. Trying to use the key with the ProjectOxford.Vision SDK 始终产生:
Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription.
我尝试了 API console, however I get the same error with my key in the Ocp-Apim-Subscription-Key
field. I tried both keys and neither of them work. I even got the free version of Face API and tried its console,但它的键遇到了同样的问题。我什至尝试了不同的数据中心,但它们似乎都 return 相同的错误。
这应该是密钥有问题吧?这不是我的 C# 代码的问题,因为控制台也不起作用。而且由于它在 API 控制台中失败,我无法做更多的事情来排除任何其他可能性吗?我不确定我还能做些什么来调试它。我想重新生成我的密钥(我看到了一个教程视频,其中显示了一个较旧的 UI 获取 API 密钥并且它们曾经有一个 "regenerate" link)但是我再也看不到这样做的方法了。
我刚刚创建了帐户并注册了 APIs,所以我不可能超过配额。我还需要做些什么来启用这些键吗?
我通过执行以下操作设法绕过了 'Access Denied' 问题:
- 我创建了一个免费的 Azure 帐户
- 我设置了一个认知服务实例Api(这生成了一对新密钥供我使用)
利用新密钥,我不得不使用以下 link: https://westus.api.cognitive.microsoft.com/vision/v1.0/ocr
而不是
https://westus.api.cognitive.microsoft.com/vision/v1.0/recognizeText
(我从认知服务测试仪表板获得此 link)。
查看测试仪表板上的请求模式,您应该能够知道如何使用 api。
如果您使用的是从 azure.microsoft.com 获得的免费试用密钥。您需要将 API 端点区域更改为 westcentralus
。以前的默认区域是westus
,我认为这是无效密钥问题的原因。
即使@Xuan Hu 对解决方案的回应是正确的,我还是挠了挠头想弄清楚如何更改终点。这是我的 2 美分:
转到 portal.azure.com,在您订阅认知服务的仪表板 > 一般信息 > 端点中记下 URL。你需要它。
在实例化 VisionServiceClient 的 VisionAPI 示例代码中查找:
VisionServiceClient VisionServiceCliente = new VisionServiceClient(SubscriptionKey);
并进行更改,包括您在 Azure 中找到的 URL:
VisionServiceClient VisionServiceCliente = new VisionServiceClient(SubscriptionKey, StringOfMyURLTakedFromPortal);
这对我有用。
仅供参考,有一个博客 post 涵盖了所有 401 访问被拒绝的场景,包括这个关于免费 API 密钥和区域特定 API 端点的场景。将它添加到这里供将来发现此 SO post - https://blogs.msdn.microsoft.com/kwill/2017/05/17/http-401-access-denied-when-calling-azure-cognitive-services-apis/.
的人们使用使用不正确的区域端点
大多数认知服务 API 都是区域特定的,这意味着在 API 帐户创建过程中,您 select 您想要在哪个区域创建帐户。这些 APIs 具有区域特定的端点,例如 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 密钥),您还将看到到期日期和端点。
如果使用 Postman 获取结果,需要记住的一件事是使用 GET 并将您的密钥放入 Header。