Refresh Token

Mutation · refreshToken

refreshToken(refreshToken: String!): AuthPayload!

Dùng refresh token hiện tại để làm mới access token. Mỗi lần thành công tạo cặp token mới và thu hồi refresh token vừa dùng. Lưu token mới cho lần làm mới tiếp theo; chính sách phiên dài hạn hoặc phiên trình duyệt từ lúc đăng nhập được giữ qua các lần làm mới.

Gửi qua HTTP POST /graphql. Không cần access token hoặc quyền thành viên workspace/conversation; refresh token trong đối số xác thực phiên. Các mutation xác thực dùng chung giới hạn 20 lần/phút theo IP trên mỗi tiến trình API; vượt giới hạn trả RATE_LIMITED.

Input

Đối sốKiểu GraphQLBắt buộcQuy tắc
refreshTokenString!CóToken từ login, loginWithOAuth, exchangeSocialToken hoặc lần làm mới trước. Không có mặc định; không thể bỏ qua hoặc gửi null. Token sai định dạng, không tồn tại hoặc hết hạn bị từ chối.

Output

Trả về AuthPayload!: một đối tượng không null khi thành công.

AuthPayload

TrườngKiểu GraphQLÝ nghĩa
accessTokenString!JWT mới; thời hạn theo JWT_ACCESS_TTL, mặc định 15 phút.
refreshTokenString!Refresh token mới thay token đã dùng; thời hạn theo loại phiên đã chọn khi đăng nhập.
userUserProfile!Hồ sơ chủ phiên; xem UserProfile.

UserProfile

TrườngKiểu GraphQLÝ nghĩa
idID!ID người dùng.
usernameString!Tên người dùng.
displayNameString!Tên hiển thị.
emailString!Email của tài khoản.
avatarUrlStringURL ảnh đại diện hoặc null.

Ví dụ

mutation RefreshToken($refreshToken: String!) {
  refreshToken(refreshToken: $refreshToken) {
    accessToken
    refreshToken
    user { id username displayName email avatarUrl }
  }
}

Biến:

{ "refreshToken": "example-current-refresh-token" }

Phản hồi minh họa:

{
  "data": {
    "refreshToken": {
      "accessToken": "example.new.access-token",
      "refreshToken": "example-new-refresh-token",
      "user": {
        "id": "user_123",
        "username": "lan_nguyen",
        "displayName": "Lan Nguyễn",
        "email": "[email protected]",
        "avatarUrl": null
      }
    }
  }
}

Token sai, hết hạn hoặc đã bị thu hồi trả UNAUTHENTICATED. Dùng lại token đã xoay vòng sẽ thu hồi cả chuỗi refresh token của phiên. Nếu hai yêu cầu đồng thời dùng cùng token, chỉ một yêu cầu thành công và yêu cầu còn lại khiến phiên không thể tiếp tục làm mới. Client cần tránh gửi đồng thời và yêu cầu đăng nhập lại khi phiên bị thu hồi.

Chữ ký operation được tạo từ GraphQL schema.