আপনার ওয়েবসাইটে Millida দিয়ে লগইন
“Login with Millida” বাটন যুক্ত করুন — আপনার ওয়েবসাইটের ভিজিটরদের জন্য Millida অ্যাকাউন্ট দিয়ে লগইন। অ্যাপ্লিকেশন রেজিস্ট্রেশন, অথরাইজেশন ফ্লো, টোকেন ভেরিফিকেশন।
আপডেট: ৭ সেপ্টেম্বর, ২০২৬
Millida একটি আইডেন্টিটি প্রোভাইডার হিসেবে কাজ করতে পারে: আপনার সাইটে একজন ভিজিটর “Sign in with Millida”-তে ক্লিক করবেন, ডেটা ট্রান্সফার নিশ্চিত করবেন, এবং ইতিমধ্যেই প্রমাণিত অবস্থায় ফিরে আসবেন। এটি OpenID Connect-এর মাধ্যমে কাজ করে — Google, Apple বা Discord দিয়ে সাইন ইন করার মতোই — তাই যেকোনো রেডিমেড OIDC লাইব্রেরি কাজ করবে।
শুধুমাত্র পরিচয় প্রকাশ করা হয়: Minecraft নিকনেম, নাম, অ্যাভাটার, এবং — আপনি অনুরোধ করলে ও ব্যক্তি সম্মতি দিলে — ইমেইল, স্কিন, লিংক করা Discord ও Telegram, এবং প্ল্যাটফর্মে রেপুটেশন। ব্যালান্স, লেনদেন এবং সার্ভার অ্যাপ্লিকেশনের জন্য উপলব্ধ নয়।
আপনাকে যা করতে হবে
1. একটি অ্যাপ্লিকেশন তৈরি করুন
প্রোফাইল → API and webhooks → Sign in with Millida ট্যাব → “Create application”।
আপনার প্রয়োজন হবে:
- Name — ব্যক্তি এটি সাইন-ইন স্ক্রিনে দেখবেন। অন্যের অ্যাপ্লিকেশনের নামে “Millida” শব্দটি নিষিদ্ধ।
- Redirect URI — নিশ্চিত করার পর ব্যবহারকারীকে কোথায় ফেরত পাঠানো হবে। শুধুমাত্র
https(ডেভেলপমেন্টের জন্যhttp://localhostঅনুমোদিত)। এটি সম্পূর্ণভাবে মেলানো হয়: একটি অতিরিক্ত স্ল্যাশ বা যোগ করা প্যারামিটার আর মিলবে না। - Privacy policy link — ব্যক্তি আপনার কাছে ডেটা ট্রান্সফারের আগে এটি দেখবেন।
তৈরি করার পর আপনি একটি client_id পাবেন এবং সার্ভার অ্যাপ্লিকেশনের জন্য একটি client_secret। সিক্রেট শুধুমাত্র একবার দেখানো হয় — সাথে সাথে এটি সংরক্ষণ করুন।
অ্যাপ্লিকেশনের ধরন: server, যদি আপনার এমন ব্যাকএন্ড থাকে যা সিক্রেট সংরক্ষণ করতে পারে; public, যদি এটি একটি SPA বা মোবাইল অ্যাপ্লিকেশন হয় এবং সিক্রেট লুকানোর কোনো জায়গা না থাকে।
2. লাইব্রেরিকে প্রোভাইডার URL দিন
https://id.millida.net
এটাই যথেষ্ট: লাইব্রেরি নিজেই https://id.millida.net/.well-known/openid-configuration পড়বে এবং বাকি URLগুলো খুঁজে নেবে।
3. ব্যক্তিকে সাইন ইন করতে পাঠান
https://id.millida.net/oauth/authorize
?response_type=code
&client_id=your_client_id
&redirect_uri=https://your-site.ru/auth/millida/callback
&scope=openid profile email
&state=random_string
&nonce=random_string
&code_challenge=base64url(sha256(code_verifier))
&code_challenge_method=S256
PKCE সবার জন্য বাধ্যতামূলক, সার্ভার অ্যাপ্লিকেশনসহ। সেশনে state সংরক্ষণ করুন এবং ফেরত আসার সময় যাচাই করুন — এটি ছাড়া আপনার সেশনে অন্যের রেসপন্স ইনজেক্ট করা যেতে পারে।
4. টোকেনের জন্য কোড বিনিময় করুন
POST https://id.millida.net/oauth/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=authorization_code&code=…&redirect_uri=…&code_verifier=…
রেসপন্সে থাকে access_token, id_token, এবং আপনি offline_access অনুরোধ করলে refresh_token।
5. কে সাইন ইন করেছেন তা জানুন
id_token পার্স করুন (JWKS, iss, aud, exp, nonce-এর বিপরীতে সিগনেচার যাচাই করুন) অথবা অনুরোধ করুন:
GET https://id.millida.net/oauth/userinfo
Authorization: Bearer <access_token>
আপনি কী কী ডেটা অনুরোধ করতে পারেন
| আপনি যা অনুরোধ করেন | আপনি যা পান |
|---|---|
openid | sub — ব্যবহারকারী শনাক্তকারী, আবশ্যক |
profile | নিকনেম, নাম, অ্যাভাটার, প্রোফাইল লিংক |
email | ইমেইল ঠিকানা এবং তা যাচাইকৃত কিনা |
minecraft | Minecraft নিকনেম, তার UUID, এডিশন, এবং বর্তমান স্কিন ও কেপের লিংক |
discord | লিংক করা Discord-এর শনাক্তকারী ও নাম |
telegram | লিংক করা Telegram-এর শনাক্তকারী ও @নাম |
reputation | প্রোফাইল লাইক, অ্যাচিভমেন্টের সংখ্যা, নিবন্ধনের তারিখ, যাচাইকৃত অ্যাকাউন্ট মার্ক |
offline_access | ব্যক্তি প্রত্যাহার না করা পর্যন্ত অ্যাক্সেস রিফ্রেশ করার অধিকার |
অফলাইন নিকনেমের কোনো UUID থাকে না — minecraft_uuid খালি থাকবে, এবং minecraft_username অ্যাকাউন্ট থেকে পূরণ করা হবে। telegram_id একটি স্ট্রিং হিসেবে আসে: একটি Telegram চ্যাট আইডি JSON-এর নির্ভুল সংখ্যায় ধরে না, এবং এটিকে সংখ্যা হিসেবে পার্স করলে শেষ অঙ্কগুলো নষ্ট হয়ে যায়।
শুধুমাত্র সাইন-ইন কাজ করার জন্য যা প্রয়োজন তা অনুরোধ করুন: ব্যক্তি সম্মতির স্ক্রিনে প্রতিটি অতিরিক্ত আইটেম পড়েন এবং ঠিক সেখানেই মন পরিবর্তন করতে পারেন।
ব্যবহারকারী শনাক্তকারী সম্পর্কে
একই ব্যক্তির জন্য প্রতিটি অ্যাপ্লিকেশনে sub আলাদা। এটি আপনার সাইটের জন্য অপরিবর্তনীয়, কিন্তু এটি অন্য সাইটের sub-এর সাথে মেলে না — এটি দিয়ে অ্যাপ্লিকেশনগুলোর মধ্যে অডিয়েন্স মেলানো যায় না।
ব্যবহারকারীর কী হিসেবে sub সংরক্ষণ করুন। ইমেইল এর জন্য উপযুক্ত নয়: এটি পরিবর্তন করা যায়।
অ্যাপ্লিকেশন যাচাই
একটি নতুন অ্যাপ্লিকেশন সাথে সাথে কাজ করে, তবে সাইন-ইন স্ক্রিনে এটি অবযাচাইকৃত হিসেবে চিহ্নিত থাকে। সাইট প্রস্তুত হলে ড্যাশবোর্ডে “Submit for review”-তে ক্লিক করুন — আমরা দেখে নেব এবং লেবেলটি সরিয়ে দেব।
সাধারণ ত্রুটি
“redirect_uri does not match any registered address” — ঠিকানাটি সম্পূর্ণ স্ট্রিং হিসেবে মেলানো হয়। ট্রেইলিং স্ল্যাশ, স্কিম এবং পোর্ট পরীক্ষা করুন।
“Only code_challenge_method=S256 is supported” — PKCE বাধ্যতামূলক, plain গ্রহণ করা হয় না।
“The authorization code has already been used” — কোডটি একবার ব্যবহারযোগ্য এবং এক মিনিট বাঁচে। বারবার বিনিময়কে লিকের লক্ষণ হিসেবে ধরা হয় এবং অ্যাপ্লিকেশনের অ্যাক্সেস সম্পূর্ণভাবে প্রত্যাহার করা হয়।
প্রত্যাহারের পর টোকেন কাজ করা বন্ধ করে দিয়েছে — ব্যক্তি প্রোফাইলের নিরাপত্তা সেটিংসে অ্যাপ্লিকেশনটি নিষ্ক্রিয় করেছেন। এটি প্রত্যাশিত আচরণ: তাকে আবার সাইন ইন করতে পাঠান।
ব্যক্তি কীভাবে অ্যাক্সেস প্রত্যাহার করেন
প্রোফাইল → Security → “Connected applications” → “Revoke”। অ্যাক্সেস সাথে সাথে বন্ধ হয়ে যায়, এবং জারি করা সব টোকেন মৃত হয়ে যায়।