OAuth 2流

了解Lokalise OAuth 2流程。

开发人员可以使用OAuth 2身份验证流在Lokalise中构建自己的应用程序来管理用户数据。

使用OAuth 2身份验证,应用程序可以代表用户向Lokalise APIv2发出请求。

OAuth 2是一种授权协议,允许用户授权第三方应用程序访问他们在另一个站点上的信息。

认证流程

这个过程可以分为三个阶段:

  • 用户请求访问码。
  • 用户使用访问代码发出请求并接收访问令牌。用户可以使用这个访问令牌从Lokalise接收数据。
  • 在访问令牌过期后,用户请求刷新令牌。

授权流程如下图所示:

11401140

注册一个新的应用程序

要在Lokalise注册您的应用程序,您应该联系我们的支持团队,并提供以下信息:

  • 申请书的标题
  • 应用程序的标志
    • 支持的尺寸为150x150px。
    • 支持的格式为PNG和JPG。
  • 应用程序的描述(该字段是可选的)。
  • 链接到应用程序网站/文档(这个字段是可选的)。
  • 要求的范围。在Lokalise API描述中找到相应API端点所需的作用域列表。

OAuth 2授权概述

Lokalise是采用OAuth 2.0授权协议实现的授权代码流。

先决条件

  • 这个应用应该是在洛卡利斯那里注册的。
  • 需要获取OAuth 2客户端ID(“客户端ID”)和OAuth 2客户端秘密(“客户端秘密”)。
  • 您应该有一个公开可用的URL,在身份验证之后,用户将被重定向到该URL(“重定向URI”)。

步骤1。获取授权码

应用程序应该将用户重定向到认证URL。授权成功后,用户被转发到以授权码作为参数的重定向URL。

请求应发送到以下URL:https://app.www.wwealerts.com/oauth2/auth

GET请求的URL参数:

参数

解释

client_id

注册后收到的App Client ID

redirect_uri

应用程序中的URL,授权后将在此发送用户。

范围

应用程序需要一个或多个范围。多个作用域应该用空格分隔。

状态

用于防止CSRF攻击的随机字符串。(可选,如果你不使用redirect_uri

下面是一个请求示例:

https://app.www.wwealerts.com/oauth2/auth?client_id=SomeClientID&redirect_uri=https://example.com/auth/success&scope=write_projects+read_keys&state=someRandomStateString

登录成功后,用户将被重定向到以下URL:

https://example.com/auth/success?code=123abc

步骤2。获取访问令牌

应用程序可以使用上一步接收到的授权代码来获取访问令牌。为了实现这一点,应用程序应该向访问令牌URL发送POST请求。

POST请求的URL参数:

参数

解释

grant_type

指定要采取的行动(应该是authorization_code

client_id

注册后收到的应用程序客户端ID

client_secret

注册后收到的应用程序客户端秘密

代码

用户身份验证和重定向成功后收到的代码

下面是一个cURL请求示例:

curl -X POST \ https://app.www.wwealerts.com/oauth2/token \ -H "content-type: application/json" \ -d "{\"grant_type\":\"authorization_token\", \"client_id\":\"SomeClientID\", \"client_secret\":\"SomeClientSecret\", \"code\":\"yourCode\"}"

一个成功的响应应该包含以下数据:

参数

解释

access_token

用于请求身份验证的访问令牌

refresh_token

刷新令牌以在当前访问令牌过期后使用以获取新的访问令牌。

expires_in

到访问令牌过期的秒数(通常为1小时)

token_type

使用的授权令牌类型。将用于经过身份验证的请求。(通常,“持票人”)。

举个例子:

{"access_token":"someAccessToken", "refresh_token":"someRefreshToken", "expires_in": 3600, "token_type": " holder "}

步骤3。向API发出请求

该应用程序现在可以代表授权用户向Lokalise API发出请求。为了授权请求,授权请求头必须包含令牌类型和实际的访问令牌。

下面是cURL的示例请求:

curl -H "授权:持有人someAccessToken" https://api.www.wwealerts.com/api2/projects

步骤4。使用刷新令牌

出于安全原因,访问令牌的过期时间相对较短(通常为1小时)。为了防止你的用户在令牌过期后需要重新授权应用程序,应用程序可以使用刷新令牌获取新的访问令牌。

应用程序应该发送一个POST请求到访问令牌URL,带有以下参数:

参数

解释

grant_type

指定要采取的行动。(应该是refresh_token).

client_id

注册后收到的App Client ID。

client_secret

注册后收到的应用程序客户端秘密。

refresh_token

通过“authorization_code”请求获得的刷新令牌

下面是cURL的示例请求:

curl -X POST \ https://app.www.wwealerts.com/oauth2/token \ -H "content-type: application/json" \ -d "{\"grant_type\":\"refresh_token\", \"client_id\":\"SomeClientID\", \"client_secret\":\"SomeClientSecret\", \"refresh_token\":\"someRefreshToken\"}"

一个成功的响应应该包含以下数据:

参数

解释

access_token

用于请求身份验证的访问令牌

范围

令牌可以访问的一个或多个范围

expires_in

到访问令牌过期的秒数(通常为1小时)

token_type

使用的授权令牌类型。将用于经过身份验证的请求。(通常,“持票人”)。

下面是一个例子:

{"access_token":"someAccessToken", "scope":"write_projects", "expires_in": 3600, "token_type": " holder "}

OAuth 2请求错误

如果OAuth 2请求导致了一个错误,响应将是一个HTTP状态码400,并且主体将包含一个JSON对象,包含以下字段:

解释

错误

错误的名字

error_description

错误描述

状态

(可选)授权码请求中添加的状态字符串

举个例子:

{"error":"invalid_request", "error_description":"Invalid post body", "state":"someRandomStateString"}

例子

中可以找到利用OAuth 2流程的示例应用程序相应的部分


这个页面对你有帮助吗?