OAuth 2流
了解Lokalise OAuth 2流程。
开发人员可以使用OAuth 2身份验证流在Lokalise中构建自己的应用程序来管理用户数据。
使用OAuth 2身份验证,应用程序可以代表用户向Lokalise APIv2发出请求。
OAuth 2是一种授权协议,允许用户授权第三方应用程序访问他们在另一个站点上的信息。
认证流程
这个过程可以分为三个阶段:
- 用户请求访问码。
- 用户使用访问代码发出请求并接收访问令牌。用户可以使用这个访问令牌从Lokalise接收数据。
- 在访问令牌过期后,用户请求刷新令牌。
授权流程如下图所示:
![API permission scope (3).jpg 1140](https://files.readme.io/c0dd8b2-API_permission_scope_3.jpg)
![Click to close... 1140](https://files.readme.io/c0dd8b2-API_permission_scope_3.jpg)
注册一个新的应用程序
要在Lokalise注册您的应用程序,您应该联系我们的支持团队,并提供以下信息:
- 申请书的标题
- 应用程序的标志
- 支持的尺寸为150x150px。
- 支持的格式为PNG和JPG。
- 应用程序的描述(该字段是可选的)。
- 链接到应用程序网站/文档(这个字段是可选的)。
- 要求的范围。在Lokalise API描述中找到相应API端点所需的作用域列表。
OAuth 2授权概述
Lokalise是采用OAuth 2.0授权协议实现的授权代码流。
- 身份验证URL:
https://app.www.wwealerts.com/oauth2/auth
- 访问令牌URL:
https://app.www.wwealerts.com/oauth2/token
- 支持的授权类型为授权代码.
- 关于该协议的更多信息可以在这里找到:
先决条件
- 这个应用应该是在洛卡利斯那里注册的。
- 需要获取OAuth 2客户端ID(“客户端ID”)和OAuth 2客户端秘密(“客户端秘密”)。
- 您应该有一个公开可用的URL,在身份验证之后,用户将被重定向到该URL(“重定向URI”)。
步骤1。获取授权码
应用程序应该将用户重定向到认证URL。授权成功后,用户被转发到以授权码作为参数的重定向URL。
请求应发送到以下URL:https://app.www.wwealerts.com/oauth2/auth
GET请求的URL参数:
参数 |
解释 |
---|---|
|
注册后收到的App Client ID |
|
应用程序中的URL,授权后将在此发送用户。 |
|
应用程序需要一个或多个范围。多个作用域应该用空格分隔。 |
|
用于防止CSRF攻击的随机字符串。(可选,如果你不使用 |
下面是一个请求示例:
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参数:
参数 |
解释 |
---|---|
|
指定要采取的行动(应该是 |
|
注册后收到的应用程序客户端ID |
|
注册后收到的应用程序客户端秘密 |
|
用户身份验证和重定向成功后收到的代码 |
下面是一个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\"}"
一个成功的响应应该包含以下数据:
参数 |
解释 |
---|---|
|
用于请求身份验证的访问令牌 |
|
刷新令牌以在当前访问令牌过期后使用以获取新的访问令牌。 |
|
到访问令牌过期的秒数(通常为1小时) |
|
使用的授权令牌类型。将用于经过身份验证的请求。(通常,“持票人”)。 |
举个例子:
{"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,带有以下参数:
参数 |
解释 |
---|---|
|
指定要采取的行动。(应该是 |
|
注册后收到的App Client ID。 |
|
注册后收到的应用程序客户端秘密。 |
|
通过“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\"}"
一个成功的响应应该包含以下数据:
参数 |
解释 |
---|---|
|
用于请求身份验证的访问令牌 |
|
令牌可以访问的一个或多个范围 |
|
到访问令牌过期的秒数(通常为1小时) |
|
使用的授权令牌类型。将用于经过身份验证的请求。(通常,“持票人”)。 |
下面是一个例子:
{"access_token":"someAccessToken", "scope":"write_projects", "expires_in": 3600, "token_type": " holder "}
OAuth 2请求错误
如果OAuth 2请求导致了一个错误,响应将是一个HTTP状态码400,并且主体将包含一个JSON对象,包含以下字段:
场 |
解释 |
---|---|
|
错误的名字 |
|
错误描述 |
|
(可选)授权码请求中添加的状态字符串 |
举个例子:
{"error":"invalid_request", "error_description":"Invalid post body", "state":"someRandomStateString"}
例子
中可以找到利用OAuth 2流程的示例应用程序相应的部分.
更新 3个月前