Please enable Javascript to view the contents

微软翻译 API 401 错误修复

 ·  ☕ 3 分钟

我最近升级了字幕翻译 - 字幕工具箱,新增加了微软翻译的功能,使用了微软翻译的API,翻译速度非常快,准确率也很高,效果非常好。

字幕翻译-微软API

不过,好景不长,最近有网友反馈,说微软翻译的功能失效了,经过排查,调用微软翻译 API 时总是返回错误 {code: 401001, message: "The request is not authorized because credentials are missing or invalid."}

微软翻译 API 认证错误分析

于是我就开始查资料,官方提示:可能是未正确设置 API 密钥或区域不匹配。

微软翻译401错误可能原因

可能的原因

  1. API 密钥问题

    • API 密钥不正确或已过期
    • 环境变量 MICROSOFT_TRANSLATOR_API_KEY 未正确设置
    • API 密钥已用完配额或被禁用
  2. 区域不匹配

    • 注意代码中使用了硬编码的区域 "eastasia",而不是使用从环境变量获取的 region
    1
    
    'Ocp-Apim-Subscription-Region': "eastasia", // 这里硬编码了区域
    
    • API 密钥可能与此区域不匹配(密钥通常与特定区域绑定)
  3. Azure 账户问题

    • 账户可能存在付款问题
    • 服务可能已被暂停

解决方案

  1. 验证 API 密钥是否正确设置在环境变量中

  2. 检查 API 密钥和区域是否匹配,建议修改代码使用环境变量中的区域:

    1
    
    'Ocp-Apim-Subscription-Region': region, // 使用环境变量中的区域
    
  3. 登录 Azure 门户,检查 Translator 服务状态和密钥是否有效

  4. 尝试在 Azure 门户中重新生成 API 密钥


我按照上面的步骤检查了一遍,发现完全没有问题,API 密钥和区域都设置正确,代码中也没有硬编码的区域。

犹疑时刻,看到了这篇帖子:

[收到错误 - { “error”: { “code”: 401001, “message”: “请求未授权,因为凭据缺失或无效。} } 在翻译服务上工作时 - Microsoft Q&A — Getting the error - { “error”: { “code”: 401001, “message”: “The request is not authorized because credentials are missing or invalid.” } } while working on Translator service - Microsoft Q&A](https://learn.microsoft.com/en-us/answers/questions/1618593/getting-the-error-((-error-((-code-401001-message)[收到错误 - { “error”: { “code”: 401001, “message”: “请求未授权,因为凭据缺失或无效。} } 在翻译服务上工作时 - Microsoft Q&A — Getting the error - { “error”: { “code”: 401001, “message”: “The request is not authorized because credentials are missing or invalid.” } } while working on Translator service - Microsoft Q&A](https://learn.microsoft.com/en-us/answers/questions/1618593/getting-the-error-((-error-((-code-401001-message)

有人说:

在阅读了 45 分钟的此类帖子、重新生成密钥、仔细检查代码等后,我发现问题与凭据丢失或无效无关。我还没有将我的计划切换到即用即付,我已经用完了我的免费配额。

这时我大概明白了,原来是微软翻译的免费额度用完了,导致了 401 错误。

为了验证这个问题,我做了两个操作:

1,在 Azure 的测试页面上测试了一下,发现确实是 401 错误。

微软翻译401错误

2,请朋友免费注册了一个微软翻译的服务给我用。

  • 结果发现,使用这个新的 API 密钥和区域,调用翻译 API 时没有问题。(代码没变,只是换了密钥)

所以,这个错误真正原因是微软翻译的免费额度用完了,而非认证错误。

解决方案有两个:

  1. 重新注册一个微软翻译的服务,获取新的 API 密钥和区域
  2. 购买微软翻译的服务,获取新的 API 密钥和区域
分享

码中人
作者
码中人
Web Developer