2

我正在尝试使用 cURL 从RingCentral 身份验证令牌 /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"
4

1 回答 1

3

OAuth 2.0 密码流程

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

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

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

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

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

创建应用程序向导

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

RingCentral 密码流程创建应用程序向导

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

应用设置页面

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

RingCentral 密码流应用程序设置页面

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

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

于 2017-12-11T01:48:58.807 回答