Skip to content
This repository has been archived by the owner on Apr 25, 2023. It is now read-only.

Commit

Permalink
整体优化 SDK 性能
Browse files Browse the repository at this point in the history
  • Loading branch information
luojielin committed May 27, 2022
1 parent e77b739 commit 0c892e9
Show file tree
Hide file tree
Showing 268 changed files with 18,842 additions and 4,881 deletions.
191 changes: 35 additions & 156 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,196 +1,75 @@
# authing-go-sdk
# SDK for Go

[Authing](https://authing.cn) 身份云 `Go` 语言客户端,包含 [Authing Open API](https://api.authing.cn/openapi/) 所有 Management API 的请求方法。
<div align=center><img width="300" src="https://files.authing.co/authing-console/authing-logo-new-20210924.svg"></div>
<br/>

此模块一般用于后端服务器环境,以管理员(Administrator)的身份进行请求,用于管理 Authing 用户、角色、分组、组织机构等资源;一般来说,你在 Authing 控制台中能做的所有操作,都能用此模块完成
Authing Go SDK 目前支持 Golang 1.8+ 版本

如果你需要以终端用户(End User)的身份进行登录、注册、登出等操作,请使用 [Guard](https://www.authing.cn/learn/guard) .

## 安装
Authing Golang SDK 由两部分组成:`ManagementClient``AuthenticationClient`

`AuthenticationClient` 以终端用户(End User)的身份进行请求,提供了登录、注册、登出、管理用户资料、获取授权资源等所有管理用户身份的方法;此模块还提供了各种身份协议的 SDK,如 [OpenID Connect](/guides/federation/oidc.md), [OAuth 2.0](/guides/federation/oauth.md), [SAML](/guides/federation/saml.md)[CAS](/guides/federation/cas.md)。此模块适合用于后端交互的服务器环境。

`ManagementClient` 以管理员(Administrator)的身份进行请求,用于管理用户池资源和执行管理任务,提供了管理用户、角色、应用、资源等方法;一般来说,你在 [Authing 控制台](https://console.authing.cn/console/userpool) 中能做的所有操作,都能用此模块完成。此模块适合在后端环境下使用。

```shell
go get -u github.com/Authing/authing-go-sdk
```

## 初始化
## GitHub 下载地址

初始化 `ManagementClient` 需要使用 `accessKeyId``accessKeySecret` 参数:
| 条目 | 说明 |
| -------- | ------------------------------------------- |
| 支持版本 | Golang 1.8 + |
| 仓库地址 | [https://github.com/Authing/authing-go-sdk](https://github.com/Authing/authing-go-sdk) |

```go
import (
"authing-go-sdk/client"
)
## 安装

options := client.ManagementClientOptions{
AccessKeyId: "AUTHING_USERPOOL_ID",
AccessKeySecret: "AUTHING_USERPOOL_SECRET",
}
client, err := client.NewClient(&options)
if err != nil {
// The exception needs to be handled by the developer.
}
安装 golang sdk 库,请运行:

```
go get github.com/Authing/authing-go-sdk
```

`ManagementClient` 会自动从 Authing 服务器获取 Management API Token,并通过返回的 Token 过期时间自动对 Token 进行缓存。

完整的参数和释义如下:

- `AccessKeyId`: Authing 用户池 ID;
- `AccessKeySecret`: Authing 用户池密钥;
- `Timeout`: 超时时间,单位为 ms,默认为 10000 ms;
- `Host`: Authing 服务器地址,默认为 `https://api.authing.cn`。如果你使用的是 Authing 公有云版本,请忽略此参数。如果你使用的是私有化部署的版本,此参数必填,格式如下: https://authing-api.my-authing-service.com(最后不带斜杠 /)。
- `Lang`: 接口 Message 返回语言格式(可选),可选值为 zh-CN 和 en-US,默认为 zh-CN。

## 快速开始
## 使用管理模块

初始化完成 `ManagementClient` 之后,你可以获取 `ManagementClient` 的实例,然后调用此实例上的方法。例如:
初始化 `ManagementClient` 需要 `userPoolId`(用户池 ID) 和 `secret`(用户池密钥):

- 获取用户列表
> 你可以在此[了解如何获取 UserPoolId 和 Secret](/guides/faqs/get-userpool-id-and-secret.md) .
```go
package main

import (
"authing-go-sdk/client"
"authing-go-sdk/dto"
"fmt"
)

func main() {
options := client.ManagementClientOptions{
AccessKeyId: "AUTHING_USERPOOL_ID",
AccessKeySecret: "AUTHING_USERPOOL_SECRET",
}
client, err := client.NewClient(&options)
request := dto.ListUsersDto{
Page: 1,
Limit: 10,
}
response := client.listUsers(request)
fmt.Println(response)
client := management.NewClient(userPoolId, secret)
}
```

- 创建角色
现在 `managementClient` 实例就可以使用了。例如可以导出所有组织机构数据:

```go
package main

import (
"authing-go-sdk/client"
"authing-go-sdk/dto"
"fmt"
)

func main() {
options := client.ManagementClientOptions{
AccessKeyId: "AUTHING_USERPOOL_ID",
AccessKeySecret: "AUTHING_USERPOOL_SECRET",
}
client, err := client.NewClient(&options)
request := dto.CreateRoleDto{
Code: "code",
Namespace: "namespace",
Description: "description",
}
response := client.createRole(request)
fmt.Println(response)
client := management.NewClient(userPoolId, secret)
resp, err := client.ExportAll()
}
```

完整的接口列表,你可以在 [Authing Open API](https://api.authing.cn/openapi/)[SDK 文档](https://authing-open-api.readme.io/reference/go) 中获取。

## 错误处理

`ManagementClient` 中的每个方法,遵循统一的返回结构:

- `StatusCode`: 请求是否成功状态码,当 `StatusCode` 为 200 时,表示操作成功,非 200 全部为失败。
- `ApiCode`: 细分错误码,当 `ApiCode` 非 200 时,可通过此错误码得到具体的错误类型。
- `Message`: 具体的错误信息。
- `Data`: 具体返回的接口数据。

一般情况下,如果你只需要判断操作是否成功,只需要对比一下 `Code` 是否为 200。如果非 200,可以在代码中通抛出异常或者任何你项目中使用的异常处理方式。

```go
package main

import (
"authing-go-sdk/client"
"authing-go-sdk/dto"
"fmt"
)

func main() {
options := client.ManagementClientOptions{
AccessKeyId: "AUTHING_USERPOOL_ID",
AccessKeySecret: "AUTHING_USERPOOL_SECRET",
}
client, err := client.NewClient(&options)
request := dto.CreateRoleDto{
Code: "code",
Namespace: "namespace",
Description: "description",
}
response := client.createRole(request)
fmt.Println(response)

if response.Code != 200 {
// 自定义错误处理逻辑
}
}
```

## 私有化部署

如果你使用的是私有化部署的 Authing IDaaS 服务,需要指定此 Authing 私有化实例的 `host`,如:

```go
package main
**私有化部署**场景需要指定你私有化的 Authing 服务的 GraphQL 端点(**不带协议头和 Path**)以及密码加密公钥,如果你不清楚可以联系 Authing IDaaS 服务管理员。

import (
"authing-go-sdk/client"
"authing-go-sdk/dto"
"fmt"
)
如:

```go
func main() {
options := client.ManagementClientOptions{
AccessKeyId: "AUTHING_USERPOOL_ID",
AccessKeySecret: "AUTHING_USERPOOL_SECRET",
Host: "YOUR_HOST", // 您的 Authing 私有化实例 HOST 地址,格式例如 https://core.authing.cn
}
client, err := client.NewClient(&options)
if err != nil {
// The exception needs to be handled by the developer.
}

request := dto.CreateRoleDto{
Code: "code",
Namespace: "namespace",
Description: "description",
}
response := client.createRole(request)
fmt.Println(response)

if response.Code != 200 {
// 自定义错误处理逻辑
}
// 增加参数配置自定义域名
client := management.NewClient(userPoolId, secret, host)
}
```

如果你不清楚如何获取,可以联系 Authing IDaaS 服务管理员。

## 资源

- [官网](https://authing.cn)
- [开发者文档](https://docs.authing.cn/)
- [Authing Open API](https://api.authing.cn/openapi/)
- [SDK 文档](https://authing-open-api.readme.io/reference/nodejs)
- [论坛社区](https://forum.authing.cn/)
## 参与贡献
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request

## 获取帮助

有任何疑问,可以在 Authing 论坛提出: [#authing-forum](https://forum.authing.cn/)
Join us on forum: [#authing-chat](https://forum.authing.cn/)
Binary file added authing-golang-sdk
Binary file not shown.
Loading

0 comments on commit 0c892e9

Please sign in to comment.