mirror of https://github.com/msgbyte/tailchat
docs: add document about oauth login
parent
7d4c527bb6
commit
23b1a851a9
@ -0,0 +1,94 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
title: OAuth
|
||||
---
|
||||
|
||||
The `Tailchat` open platform supports the `OAuth` login protocol, and you can easily integrate the `Tailchat` account system into your system. Just like our common `Github Login`, `Google Login`, `Apple Login`
|
||||
|
||||
Now, you can use `Tailchat` to implement a unified account management system for your multiple platforms.
|
||||
|
||||
## Create a new open platform application in Tailchat
|
||||
|
||||
You need to create an open platform application and enable **OAuth** service.
|
||||
|
||||
Fill in the address that is allowed to be redirected in **callback address**.
|
||||
|
||||

|
||||
|
||||
## Create a stand-alone application that initiates and accepts callbacks
|
||||
|
||||
First of all, we need to have a general understanding of the basic process of **OAuth** before we officially start
|
||||
|
||||

|
||||
|
||||
Simply put, it is divided into three steps:
|
||||
|
||||
- The first step: access authorization, you need to pass client_id: client id, redirect_uri: redirect uri, response_type is code, scope is the scope of authorization, fill in `openid profile` by default, and state is other custom parameters
|
||||
- Step 2: After the authorization is passed, it will be redirected to redirect_uri, and the code will be used as its parameter
|
||||
- Step 3: After getting the code, you can exchange it for an access token, and then you can directly access resources through the token
|
||||
|
||||
You can refer to [https://github.com/msgbyte/tailchat/blob/master/server/test/demo/openapi-client-simple/index.ts](https://github.com/msgbyte/tailchat/blob /master/server/test/demo/openapi-client-simple/index.ts) to implement your own OAuth application
|
||||
|
||||
### Main process
|
||||
|
||||
Here is a brief overview of the process:
|
||||
|
||||
First construct a request address, like:
|
||||
```
|
||||
<API>/open/auth?client_id=<clientId>&redirect_uri=<redirect_uri>&scope=openid profile&response_type=code&state=123456789
|
||||
```
|
||||
|
||||
in:
|
||||
- `API` is your tailchat backend address, if you use the default deployment scheme, it is your access address.
|
||||
- `clientId` is the address of the open platform you applied for in the first step.
|
||||
- `redirect_uri` is your callback address, you need to make sure it has been added to the whitelist of allowed callback addresses
|
||||
- `scope` is the scope of application authorization, currently fill in `openid profile` fixedly
|
||||
- `response_type` is the response type, just fill in `code`
|
||||
- `state` and other custom parameters will be called with redirection and `code` parameters.
|
||||
|
||||
After the user visits this address, it will jump to the Tailchat platform for login authorization. If the authorization is passed, it will be redirected to the address specified by `redirect_uri`. At this time, the receiving address can get `code` and `state` in the query string.
|
||||
|
||||
In the next step, we need to exchange `code` for `token` by sending a POST request. Next, we need to use `token` to obtain user information
|
||||
|
||||
```
|
||||
POST <API>/open/token
|
||||
{
|
||||
"client_id": clientId,
|
||||
"client_secret": clientSecret,
|
||||
"redirect_uri": redirect_uri,
|
||||
"code": code,
|
||||
"grant_type": 'authorization_code',
|
||||
}
|
||||
```
|
||||
|
||||
return value:
|
||||
```
|
||||
{
|
||||
access_token,
|
||||
expires_in,
|
||||
id_token,
|
||||
scope,
|
||||
token_type
|
||||
}
|
||||
```
|
||||
|
||||
At this point we got the `access_token`, which we can use to request user information:
|
||||
|
||||
```
|
||||
POST <API>/open/me
|
||||
{
|
||||
"access_token": access_token,
|
||||
}
|
||||
```
|
||||
|
||||
return value:
|
||||
```
|
||||
{
|
||||
sub,
|
||||
nickname,
|
||||
discriminator,
|
||||
avatar,
|
||||
}
|
||||
```
|
||||
|
||||
Among them, `sub` can be understood as the user's id, which is the unique identifier of the user
|
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Loading…
Reference in New Issue