todu logo
developer
Тоду хэрэглэгч +100k
Дижитал бүтээгдэхүүн хөгжүүлэгч танд зориулан бүтээв.
Тоду-г өөрийн дижитал бүтээгдэхүүндээ үнэ төлбөргүй холбон ашиглаарай.

Танилцуулга

 (Todu Auth 1.1.0)
Тоду нь төрөл бүрийн онлайн үйлчилгээ, программуудад аюулгүй, найдвартай нэвтрүүлэх зорилготой Монгол улсын нэвтрэлт танилтын систем юм. Энэхүү системийг хүссэн хүн бүр үнэ төлбөргүй ашиглах боломжтой бөгөөд хөгжүүлэгч нар өөрсдийн дижитал бүтээгдэхүүнийг шууд холбон ашиглах, бүтээгдэхүүнийхээ хэрэглэгчдийг удирдах боломжийг олгож байгаа юм.

Заавар

Энэхүү заавар нь хөгжүүлэгч нарт зориулан, өөрийн хөгжүүлж буй программ болон гар утасны апп-ыг хэрхэн Тоду-тай холбох, API-уудыг ашиглах талаарх заавар юм.

Ашиглах алхмууд

  1. Developer account нэвтрэх Тоду дээр программаа бүртгэх
    Тоду-г өөрийн хөгжүүлж буй программ болон гар утасны апп даа холбохын тулд https://todu.tech/developer линкээр орж Тоду-д шинэ хэрэглэгчээр бүртгүүлэн “Developer account” үүсгэн, нэвтэрнэ.
  2. Холбох системийг бүртгэх.
    “Developer account”-ээр нэвтэрсний дараа “Систем үүсгэх” гэж даран, холбох гэж буй программ эсвэл аппын доорх мэдээллийг бүртгэж хадгална.
    • Лого зураг (PNG өргөтгөлтэй)
    • Программын нэр
    • Логин хийх төрөл
      • Public - Тоду бүртгэлтэй бүх хэрэглэгч нэвтэрнэ.
      • Private - Зөвхөн таны урьсан Тоду бүртгэлтэй хэрэглэгч нэвтэрнэ.
    • Сallback URI
      Амжилттай логин хийсэн Тоду хэрэглэгч очих программын линкийг энд оруулна. Хэрэв вэбсайт болон аппын хувьд ялгаатай линк байвал тус тусад нь нэмж оруулна.
    • Logout URL
      Тоду хэрэглэгч программаас гарах үед очих линкийг энд оруулна.
  3. Бүртгэсэн системийн холболт амжилттай эсэхийг турших.
    Та өөрийн бүртгэсэн программыг амжилттай холбогдох эсэхийг туршихын тулд Postman ашиглан тестлэх боломжтой.
    • Postman-ий жишээ линк-ээс татна.
    • Postman программыг нээж, файлыг импортолж оруулна.
    • “Todu doc” гэсэн project нээгдэж, 3 API-ийг гарч ирнэ.
      • Login
      • Grant token
      • User claim
    • Todu OAuth2.0 -н диаграм дээр харуулсны дагуу хүсэлтүүдийг туршиж үзэхэд, амжилттай нэвтэрсэн хэрэглэгчийн мэдээллийг буцаана.
  4. Программаа холбох.
    Дараах Todu Oauth2.0 зааврын дагуу холболтыг хийнэ.
  5. Хэрэглэгчийг программаас гаргах.
    Хэрэглэгчийн найдвартай байдлыг сайжруулах зорилгоор Тоду хэрэглэгчийн тодорхой хэдэн үйлдэлд нэвтэрсэн программаас гаргах (logout хийх) хүсэлтийг системээс явуулна. Үүнд:
    • Хэрэглэгч нууц үгээ сольсон эсвэл сэргээсэн.
    • Хэрэглэгч тухайн төхөөрөмжийг блоклосон.
    • Хэрэглэгч холбогдсон программыг бүртгэлээсээ хассан.
    • Админ хэрэглэгчийг блоклосон.

if filter.StartDate != nil && filter.EndDate != nil {
		if !filter.StartDate.IsZero() && !filter.EndDate.IsZero() {
			start, err := time.Parse(time.RFC3339, filter.StartDate.UTC().Format(dateDetailLayout))
			if err != nil {
				return nil
			}

			end, err := time.Parse(time.RFC3339, filter.EndDate.UTC().Format(dateDetailLayout))
			if err != nil {
				return nil
			}
			filterForFind["start_at"] = bson.M{
				"$gt": start,
				"$lt": end,
			}
		}
	}

Todu Oauth2.0 documentation

  1. Хэрэглэгчийг нэвтрэх хуудас руу үсэргэх бөгөөд url нь: https://todu.tech/auth/?access_type=offline&client_id={{CLIENT_ID}}&redirect_uri={{REDIRECT_URI}}&response_type=code&scope={{SCOPE}}&state={{GENERATED_STATE}} байх ёстой.
    1. CLIENT_ID тухайн системд зориулж generate хийсэн unique identifier байх ёстой бөгөөд https://todu.tech/developer линкээр орж үүсгэнэ.
    2. REDIRECT_URI нь хэрэглэгч нэвтэрч орсны дараа дуудах URI байх бөгөөд үүнийг систем үүсгэх эсвэл засах үедээ оруулсан байх шаардлагатай.
    3. SCOPE нь системд хэрэглэгчийн шаардлагатай мэдээллүүдэд харгалзсан утгуудыг зайгаар тусгаарлаж бичнэ.
      1. open_id - хэрэглэгчийн unique id
      2. phone - хэрэглэгчийн утасны дугаар
      3. profile - хэрэглэгчийн профайл зураг
      4. email - хэрэглэгчийн мэйл хаяг
    4. GENERATED_STATE нь системээс явуулах бөгөөд todu систем уг мэдээллийг боловсруулахгүй тул хоосон явуулахгүй байх.
  2. Хэрэглэгч нэвтэрч орсны дараа redirect_uri руу code, state query parameter-үүдтэй үсэргэнэ.
    1. code - уг code-ыг Step 3-д ашиглана.
    2. state - 1d хэсэгт хэрэглэсэн утга.
  3. http://todu.tech/oauth2/token url руу POST хүсэлтээр form urlencoded format-аар code-ын утгыг явуулж accesstoken-ыг авна.
    Body:
    1. client_id
    2. client_secret
    3. code
    4. grant_type - authorization_code(static утга)
  4. http://todu.tech/oauth2/userinfo url руу GET хүсэлт явуулж хэрэглэгчийн мэдээллийг авна. Headers:
    1. Authorization : Bearer {{access token}}
  5. Logout(Optional) Тухайн нэвтэрсэн Тоду хэрэглэгчийг logout хийх хүсэлтийг системээс ирүүлж болно. Хэрэв холбосон программдаа та logout callback url оруулсан бол, logout хүсэлт ирэх үед таны callback url руу http post хүсэлт очих бөгөөд хүсэлтийн body нь дараах json бүтэцтэй байна.
    1. logout_token - step 3 дээр авсан access_token байх бөгөөд, уг access_token хүчингүй болсныг илтгэнэ.

if filter.StartDate != nil && filter.EndDate != nil {
		if !filter.StartDate.IsZero() && !filter.EndDate.IsZero() {
			start, err := time.Parse(time.RFC3339, filter.StartDate.UTC().Format(dateDetailLayout))
			if err != nil {
				return nil
			}

			end, err := time.Parse(time.RFC3339, filter.EndDate.UTC().Format(dateDetailLayout))
			if err != nil {
				return nil
			}
			filterForFind["start_at"] = bson.M{
				"$gt": start,
				"$lt": end,
			}
		}
	}


from functools import lru_cache

@lru_cache(maxsize=None)
def memoized_fibonacci(n):
    if n <= 1:
        return n
    else:
        return memoized_fibonacci(n - 1) + memoized_fibonacci(n - 2)


async function authenticate() {
    const response = await fetch("/oauth2/todu-login", {
      method: "GET",
      headers: {
        "Content-Type": "application/json",
      },
    });
    if (response.status != 200) {
      console.log("aldaa");
      return;
    }
    const data = await response.json();
    window.location.href = data.url;
  }