RingCentral Auth Token 在 Curl 调用中失败 - "Unauthorized for this grant type"

RingCentral Auth Token Failed in Curl Call - "Unauthorized for this grant type"

我正在尝试使用 cURL 从 RingCentral auth token /restapi/oauth/token 端点获取身份验证令牌,但失败并显示错误:

400 Bad Request

{
    "error": "unauthorized_client",
    "error_description": "Unauthorized for this grant type",
    "errors": [
        {
            "errorCode": "OAU-251",
            "message": "Unauthorized for this grant type"
        }
    ]
}

这是我试过的:

curl -X POST "https://platform.devtest.ringcentral.com/restapi/oauth/token" \
-H "Accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-u "clientId:clientpassword" \
-d "username=username&password=password&extension=101&grant_type=password"

OAuth 2.0 密码流程

您正在使用 OAuth 2.0 密码授权 (grant_type=password) 发出 OAuth 2.0 请求,在 RingCentral 开发人员门户中也称为“密码流”,正式名称为“资源所有者密码凭据”授权在 OAuth 2.0 IETF RFC 6749 标准中。

为了使用密码流程,您的应用程序必须支持下面屏幕截图中显示的 Password flow 授权类型。

要使用此流程,您的应用需要满足两个条件:

  • 能够保护客户端机密:应用程序凭据包括客户端 ID 和客户端机密。对于密码流,必须保护客户端机密不受最终用户的影响,例如在安全的服务器应用程序上。它不能与仅限浏览器的客户端应用程序一起使用,因为最终用户将能够检查和检索客户端密码。
  • 成为私有应用程序:密码流要求应用程序所有者有权访问资源所有者(也称为最终用户)的密码。因此,它只能用于应用程序所有者和资源所有者在同一组织中的私有应用程序。 public 应用不支持它,因为密码不应提供给应用开发者。

要使用此授权类型,您需要确保您的应用在 RingCentral 开发者门户中配置为具有密码流授权,如下所示:

创建应用程序向导

创建应用程序时,确保选中“密码流”。您的选择基于应用的“应用程序类型”和“平台类型”,而这又与应用的安全规范相关。

这是一个 GIF 动画,显示了各种应用程序对 OAuth 授权设置。

应用设置页面

要验证现有应用是否启用了“密码流”,请转至应用“设置”页面的“OAuth 设置”部分并验证是否存在密码流。

以下是 IETF RFC 6749 中有关密码授予的一些信息:

https://www.rfc-editor.org/rfc/rfc6749#section-1.3.3