Google চ্যাট ব্যবহারকারী হিসাবে প্রমাণীকরণ এবং অনুমোদন করুন

এই নির্দেশিকা ব্যাখ্যা করে কিভাবে OAuth 2.0 ব্যবহার করতে হয় ব্যবহারকারীদের Google শংসাপত্রের সাথে চ্যাট API অ্যাক্সেস করতে। ব্যবহারকারীর শংসাপত্রের সাথে প্রমাণীকরণ এবং অনুমোদন করা চ্যাট অ্যাপগুলিকে ব্যবহারকারীর ডেটা অ্যাক্সেস করতে এবং প্রমাণীকৃত ব্যবহারকারীর পক্ষে ক্রিয়াকলাপ সম্পাদন করতে দেয়। ব্যবহারকারীর পক্ষে প্রমাণীকরণ করে, অ্যাপটির সেই ব্যবহারকারীর মতো একই অনুমতি রয়েছে এবং এটি সেই ব্যবহারকারীর দ্বারা সঞ্চালিত হওয়ার মতো ক্রিয়া সম্পাদন করতে পারে।

ব্যবহারকারীর শংসাপত্র সহ একটি API কল প্রমাণীকরণ এবং অনুমোদন করার পরে, চ্যাট অ্যাপগুলি নিম্নলিখিতগুলি করতে পারে:

  • চ্যাট স্পেস তৈরি করুন।
  • চ্যাট স্পেস এবং গ্রুপ কথোপকথনে ব্যবহারকারীদের যোগ করুন।
  • অন্যান্য ওয়ার্কস্পেস এপিআইতে ব্যবহারকারীর ডেটা নিয়ে কাজ করুন যেমন নিম্নলিখিত:

যখন একটি অ্যাপ ব্যবহারকারীর প্রমাণীকরণের সাথে একটি ক্রিয়া সম্পাদন করে (যেমন একটি স্পেস তৈরি করা), তখন Google Chat একটি অ্যাট্রিবিউশন বার্তা প্রদর্শন করে যা ব্যবহারকারীদের অ্যাপটির নাম বলে যেটি এটি অনুমোদনকারী ব্যবহারকারীর জন্য অ্যাকশনটি করেছে।

Google Chat অ্যাপ একজন ব্যবহারকারীর জন্য একটি স্থান তৈরি করে।
চিত্র 1 . কোনো চ্যাট অ্যাপ ব্যবহারকারীর পক্ষে স্পেস তৈরি করলে Google Chat যে অ্যাট্রিবিউশন মেসেজটি দেখায়।

চ্যাট অ্যাপগুলির কখন প্রমাণীকরণের প্রয়োজন হয় এবং কী ধরনের প্রমাণীকরণ ব্যবহার করতে হবে সে সম্পর্কে আরও জানতে, চ্যাট API প্রমাণীকরণ এবং অনুমোদন ওভারভিউতে প্রয়োজনীয় প্রমাণীকরণের প্রকারগুলি দেখুন৷

আপনি যদি একজন ডোমেন প্রশাসক হন, আপনি প্রতিটি ব্যবহারকারীর সম্মতি না দিয়ে আপনার ব্যবহারকারীদের ডেটা অ্যাক্সেস করার জন্য একটি অ্যাপ্লিকেশনের পরিষেবা অ্যাকাউন্টকে অনুমোদন করার জন্য ডোমেন-ব্যাপী কর্তৃত্ব প্রদান করতে পারেন। আপনি ডোমেন-ওয়াইড ডেলিগেশন কনফিগার করার পরে, পরিষেবা অ্যাকাউন্ট একটি ব্যবহারকারী অ্যাকাউন্টের ছদ্মবেশ ধারণ করতে পারে ৷ যদিও একটি পরিষেবা অ্যাকাউন্ট প্রমাণীকরণের জন্য ব্যবহার করা হয়, ডোমেন-ব্যাপী প্রতিনিধিত্ব একজন ব্যবহারকারীর ছদ্মবেশ ধারণ করে এবং তাই ব্যবহারকারীর প্রমাণীকরণ হিসাবে বিবেচিত হয়। যেকোন কার্যকারিতার জন্য ব্যবহারকারীর প্রমাণীকরণ প্রয়োজন, আপনি ডোমেন-ওয়াইড ডেলিগেশন ব্যবহার করতে পারেন।

পূর্বশর্ত

এই নির্দেশিকায় উদাহরণটি চালানোর জন্য, আপনার নিম্নলিখিত পূর্বশর্তগুলির প্রয়োজন:

উপরন্তু, আপনার নিম্নলিখিত ভাষা-নির্দিষ্ট পূর্বশর্ত প্রয়োজন:

জাভা

  • JDK 1.7 বা তার বেশি
  • ম্যাভেন প্যাকেজ ম্যানেজমেন্ট টুল
  • একটি প্রাথমিক মাভেন প্রকল্প। একটি নতুন প্রকল্প শুরু করতে, আপনার কমান্ড-লাইন ইন্টারফেসে নিম্নলিখিত কমান্ডটি চালান:

    mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
    

পাইথন

  • পাইথন 3.6 বা তার বেশি
  • পাইপ প্যাকেজ ম্যানেজমেন্ট টুল

Node.js

  • Node.js
  • npm প্যাকেজ ম্যানেজমেন্ট টুল
  • একটি প্রাথমিক Node.js প্রকল্প। একটি নতুন প্রকল্প শুরু করতে, একটি নতুন ফোল্ডার তৈরি করুন এবং স্যুইচ করুন, তারপর আপনার কমান্ড-লাইন ইন্টারফেসে নিম্নলিখিত কমান্ডটি চালান:

    npm init
    

অ্যাপস স্ক্রিপ্ট

ধাপ 1: OAuth সম্মতি স্ক্রীন কনফিগার করুন, স্কোপ নির্দিষ্ট করুন এবং আপনার অ্যাপ নিবন্ধন করুন

আপনি অনুমোদনের জন্য OAuth 2.0 ব্যবহার করলে, Google আপনার প্রকল্পের সারাংশ, এর নীতি এবং অনুরোধকৃত অনুমোদনের সুযোগ সহ ব্যবহারকারীকে একটি সম্মতি স্ক্রীন প্রদর্শন করে। আপনার অ্যাপের OAuth সম্মতি স্ক্রীন কনফিগার করা হলে তা নির্ধারণ করে যে Google ব্যবহারকারী এবং অ্যাপ পর্যালোচনাকারীদের কাছে কী প্রদর্শন করে এবং আপনার অ্যাপটিকে নিবন্ধন করে যাতে আপনি পরে এটি প্রকাশ করতে পারেন।

OAuth 2.0 ব্যবহার করা সমস্ত অ্যাপের জন্য একটি সম্মতি স্ক্রিন কনফিগারেশন প্রয়োজন, কিন্তু আপনাকে শুধুমাত্র আপনার Google Workspace সংস্থার বাইরের লোকেরা ব্যবহার করা অ্যাপগুলির জন্য স্কোপের তালিকা করতে হবে।

  1. Google ক্লাউড কনসোলে, মেনু > API এবং পরিষেবা > OAuth সম্মতি স্ক্রীনে যান।

    OAuth সম্মতি স্ক্রিনে যান

  2. আপনার অ্যাপের জন্য ব্যবহারকারীর ধরন নির্বাচন করুন, তারপর তৈরি করুন ক্লিক করুন।

  3. অ্যাপ রেজিস্ট্রেশন ফর্মটি পূরণ করুন, তারপর সংরক্ষণ করুন এবং চালিয়ে যান-এ ক্লিক করুন।

  4. স্কোপ যোগ করুন বা সরান ক্লিক করুন। আপনার অ্যাপের জন্য প্রয়োজনীয় অনুমোদনের সুযোগ যোগ করুন এবং যাচাই করুন, আপডেট ক্লিক করুন, তারপর সংরক্ষণ করুন এবং চালিয়ে যান-এ ক্লিক করুন।

  5. আপনার অ্যাপ নিবন্ধন সারাংশ পর্যালোচনা করুন. পরিবর্তন করতে সম্পাদনা ক্লিক করুন, অথবা ড্যাশবোর্ডে ফিরে যান ক্লিক করুন।

ধাপ 2: Google ক্লাউড কনসোলে OAuth ক্লায়েন্ট আইডি শংসাপত্র তৈরি করুন

শেষ ব্যবহারকারী হিসাবে প্রমাণীকরণ করতে এবং আপনার অ্যাপে ব্যবহারকারীর ডেটা অ্যাক্সেস করতে, আপনাকে এক বা একাধিক OAuth 2.0 ক্লায়েন্ট আইডি তৈরি করতে হবে। Google-এর OAuth সার্ভারে একটি একক অ্যাপ শনাক্ত করতে একটি ক্লায়েন্ট আইডি ব্যবহার করা হয়। যদি আপনার অ্যাপ একাধিক প্ল্যাটফর্মে চলে — যেমন Android, iOS এবং ওয়েব — তাহলে আপনাকে প্রতিটি প্ল্যাটফর্মের জন্য একটি আলাদা ক্লায়েন্ট আইডি তৈরি করতে হবে।

OAuth ক্লায়েন্ট আইডি শংসাপত্র তৈরি করুন

কিভাবে একটি OAuth ক্লায়েন্ট আইডি তৈরি করতে হয় সে সম্পর্কে নির্দিষ্ট নির্দেশাবলীর জন্য আপনার আবেদনের ধরন বেছে নিন:

ওয়েব অ্যাপ্লিকেশন

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. অ্যাপ্লিকেশন প্রকার > ওয়েব অ্যাপ্লিকেশন ক্লিক করুন।
  4. নাম ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  5. আপনার অ্যাপের সাথে সম্পর্কিত অনুমোদিত URI যোগ করুন:
    • ক্লায়েন্ট-সাইড অ্যাপস (জাভাস্ক্রিপ্ট) -অনুমোদিত জাভাস্ক্রিপ্ট অরিজিন- এর অধীনে, URI যোগ করুন-এ ক্লিক করুন। তারপর, ব্রাউজার অনুরোধের জন্য ব্যবহার করার জন্য একটি URI লিখুন। এটি সেই ডোমেনগুলিকে চিহ্নিত করে যেগুলি থেকে আপনার অ্যাপ্লিকেশনটি OAuth 2.0 সার্ভারে API অনুরোধ পাঠাতে পারে৷
    • সার্ভার-সাইড অ্যাপস (জাভা, পাইথন, এবং আরও) -অথরাইজড রিডাইরেক্ট ইউআরআই- এর অধীনে, ইউআরআই যোগ করুন ক্লিক করুন। তারপর, একটি এন্ডপয়েন্ট URI লিখুন যেখানে OAuth 2.0 সার্ভার প্রতিক্রিয়া পাঠাতে পারে।
  6. তৈরি করুন ক্লিক করুন। OAuth ক্লায়েন্ট তৈরি করা স্ক্রীন প্রদর্শিত হবে, আপনার নতুন ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখাচ্ছে।

    ক্লায়েন্ট আইডি নোট করুন। ক্লায়েন্ট গোপনীয়তা ওয়েব অ্যাপ্লিকেশনের জন্য ব্যবহার করা হয় না.

  7. ওকে ক্লিক করুন। নতুন তৈরি শংসাপত্রটি OAuth 2.0 ক্লায়েন্ট আইডির অধীনে প্রদর্শিত হয়।

অ্যান্ড্রয়েড

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. অ্যাপ্লিকেশন প্রকার > অ্যান্ড্রয়েড ক্লিক করুন।
  4. "নাম" ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  5. "প্যাকেজের নাম" ক্ষেত্রে, আপনার AndroidManifest.xml ফাইল থেকে প্যাকেজের নাম লিখুন।
  6. "SHA-1 শংসাপত্রের ফিঙ্গারপ্রিন্ট" ক্ষেত্রে, আপনার তৈরি করা SHA-1 শংসাপত্রের আঙ্গুলের ছাপ লিখুন৷
  7. তৈরি করুন ক্লিক করুন। OAuth ক্লায়েন্ট তৈরি করা স্ক্রীন প্রদর্শিত হবে, আপনার নতুন ক্লায়েন্ট আইডি দেখাচ্ছে।
  8. ওকে ক্লিক করুন। নতুন তৈরি শংসাপত্র "OAuth 2.0 ক্লায়েন্ট IDs" এর অধীনে প্রদর্শিত হবে৷

iOS

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. অ্যাপ্লিকেশন প্রকার > iOS এ ক্লিক করুন।
  4. "নাম" ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  5. "বান্ডেল আইডি" ফিল্ডে, অ্যাপের Info.plist ফাইলে তালিকাভুক্ত বান্ডিল শনাক্তকারী লিখুন।
  6. ঐচ্ছিক: অ্যাপল অ্যাপ স্টোরে আপনার অ্যাপটি দেখা গেলে অ্যাপ স্টোর আইডি লিখুন।
  7. ঐচ্ছিক: "টিম আইডি" ফিল্ডে, অ্যাপল দ্বারা তৈরি এবং আপনার দলকে বরাদ্দ করা অনন্য 10-অক্ষরের স্ট্রিংটি লিখুন।
  8. তৈরি করুন ক্লিক করুন। OAuth ক্লায়েন্ট তৈরি করা স্ক্রীন প্রদর্শিত হবে, আপনার নতুন ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখাচ্ছে।
  9. ওকে ক্লিক করুন। নতুন তৈরি শংসাপত্র "OAuth 2.0 ক্লায়েন্ট IDs" এর অধীনে প্রদর্শিত হবে৷

ক্রোম অ্যাপ

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. অ্যাপ্লিকেশনের ধরন > Chrome অ্যাপে ক্লিক করুন।
  4. "নাম" ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  5. "অ্যাপ্লিকেশন আইডি" ক্ষেত্রে, আপনার অ্যাপের অনন্য 32-অক্ষরের আইডি স্ট্রিং লিখুন। আপনি আপনার অ্যাপের Chrome ওয়েব স্টোর URL এবং Chrome ওয়েব স্টোর ডেভেলপার ড্যাশবোর্ডে এই আইডি মানটি খুঁজে পেতে পারেন৷
  6. তৈরি করুন ক্লিক করুন। OAuth ক্লায়েন্ট তৈরি করা স্ক্রীন প্রদর্শিত হবে, আপনার নতুন ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখাচ্ছে।
  7. ওকে ক্লিক করুন। নতুন তৈরি শংসাপত্র "OAuth 2.0 ক্লায়েন্ট IDs" এর অধীনে প্রদর্শিত হবে৷

ডেস্কটপ অ্যাপ

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. Application type > Desktop app এ ক্লিক করুন।
  4. নাম ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  5. তৈরি করুন ক্লিক করুন। OAuth ক্লায়েন্ট তৈরি করা স্ক্রীন প্রদর্শিত হবে, আপনার নতুন ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখাচ্ছে।
  6. ওকে ক্লিক করুন। নতুন তৈরি শংসাপত্রটি OAuth 2.0 ক্লায়েন্ট আইডিগুলির অধীনে প্রদর্শিত হয়৷

টিভি এবং সীমিত ইনপুট ডিভাইস

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. অ্যাপ্লিকেশন প্রকার > টিভি এবং সীমিত ইনপুট ডিভাইসে ক্লিক করুন।
  4. "নাম" ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  5. তৈরি করুন ক্লিক করুন। OAuth ক্লায়েন্ট তৈরি করা স্ক্রীন প্রদর্শিত হবে, আপনার নতুন ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখাচ্ছে।
  6. ওকে ক্লিক করুন। নতুন তৈরি শংসাপত্র "OAuth 2.0 ক্লায়েন্ট IDs" এর অধীনে প্রদর্শিত হবে৷

ইউনিভার্সাল উইন্ডোজ প্ল্যাটফর্ম (UWP)

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. Application type > Universal Windows Platform (UWP) এ ক্লিক করুন।
  4. "নাম" ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  5. "স্টোর আইডি" ক্ষেত্রে, আপনার অ্যাপের অনন্য, 12-অক্ষরের Microsoft স্টোর আইডি মান লিখুন। আপনি আপনার অ্যাপের Microsoft স্টোর URL এবং অংশীদার কেন্দ্রে এই আইডিটি খুঁজে পেতে পারেন।
  6. তৈরি করুন ক্লিক করুন। OAuth ক্লায়েন্ট তৈরি করা স্ক্রীন প্রদর্শিত হবে, আপনার নতুন ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখাচ্ছে।
  7. ওকে ক্লিক করুন। নতুন তৈরি শংসাপত্র "OAuth 2.0 ক্লায়েন্ট IDs" এর অধীনে প্রদর্শিত হবে৷

ক্লায়েন্ট গোপন JSON ফাইল ডাউনলোড করুন

ক্লায়েন্ট সিক্রেট ফাইল হল OAuth ক্লায়েন্ট আইডি শংসাপত্রের একটি JSON উপস্থাপনা যা আপনার চ্যাট অ্যাপ শংসাপত্র দেওয়ার সময় উল্লেখ করতে পারে।

  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. OAuth 2.0 ক্লায়েন্ট আইডির অধীনে, আপনার তৈরি করা ক্লায়েন্ট আইডিটিতে ক্লিক করুন।

  3. JSON ডাউনলোড এ ক্লিক করুন।

  4. ফাইলটিকে client_secrets.json হিসাবে সংরক্ষণ করুন।

ধাপ 3: Google ক্লায়েন্ট লাইব্রেরি এবং অন্যান্য নির্ভরতা ইনস্টল করুন

প্রকল্পের জন্য প্রয়োজনীয় Google ক্লায়েন্ট লাইব্রেরি এবং অন্যান্য নির্ভরতা ইনস্টল করুন।

জাভা

আপনার Maven প্রকল্পে Google ক্লায়েন্ট লাইব্রেরি এবং অন্যান্য প্রয়োজনীয় নির্ভরতা যোগ করতে, আপনার প্রকল্পের ডিরেক্টরিতে pom.xml ফাইলটি সম্পাদনা করুন এবং নিম্নলিখিত নির্ভরতা যোগ করুন:

<dependencies>
  <!-- ... existing dependencies ... -->
  <dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-chat</artifactId>
    <version>v1-rev20230905-2.0.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.19.0</version>
  </dependency>
  <dependency>
    <groupId>com.google.oauth-client</groupId>
    <artifactId>google-oauth-client-jetty</artifactId>
    <version>1.34.1</version>
  </dependency>
  <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.10.1</version>
  </dependency>
</dependencies>

পাইথন

আপনি যদি পাইথনের জন্য Google ক্লায়েন্ট লাইব্রেরিগুলি ইতিমধ্যে ইনস্টল না করে থাকেন তবে আপনার কমান্ড-লাইন ইন্টারফেসে নিম্নলিখিত কমান্ডটি চালান:

pip3 install --upgrade google-api-python-client google-auth-oauthlib

Node.js

আপনার Node.js প্রকল্পে Google ক্লায়েন্ট লাইব্রেরি এবং অন্যান্য প্রয়োজনীয় নির্ভরতা যোগ করতে, আপনার প্রকল্পের ডিরেক্টরিতে স্যুইচ করুন এবং আপনার কমান্ড-লাইন ইন্টারফেসে নিম্নলিখিত কমান্ডটি চালান:

npm install "@googleapis/chat" open server-destroy

অ্যাপস স্ক্রিপ্ট

এই নমুনা Google Chat API কল করতে উন্নত চ্যাট পরিষেবা ব্যবহার করে। আপনার Apps স্ক্রিপ্ট প্রকল্পের জন্য পরিষেবা চালু করতে:

  1. বাম দিকে, এডিটর ক্লিক করুন।
  2. বাম দিকে, পরিষেবাগুলির পাশে, একটি পরিষেবা যোগ ক্লিক করুন৷
  3. Google Chat API নির্বাচন করুন।
  4. সংস্করণে , v1 নির্বাচন করুন।
  5. যোগ করুন ক্লিক করুন.

আপনি আমাদের ক্লায়েন্ট লাইব্রেরি দ্বারা সমর্থিত যেকোনো ভাষা ব্যবহার করতে পারেন।

ধাপ 4: একটি স্ক্রিপ্ট লিখুন যা Chat API কল করে

OAuth অনুমোদন সহ একটি API কল করা একটি বহু-পদক্ষেপ প্রক্রিয়া। ওয়েব বা ডেস্কটপ অ্যাপ্লিকেশনগুলিতে, প্রক্রিয়াটি সাধারণত নিম্নরূপ:

  1. অ্যাপটি ব্যবহারকারীকে অনুমোদনের সুযোগ দ্বারা নির্দিষ্ট ব্যবহারকারীর ডেটা অ্যাক্সেসের অনুরোধ করে একটি অনুমোদন পৃষ্ঠায় নির্দেশ করে। অ্যাপটি ক্লায়েন্ট আইডি শংসাপত্রের মাধ্যমে নিজেকে সনাক্ত করে।
  2. ব্যবহারকারী অ্যাপ দ্বারা অনুরোধ করা অনুমতি পর্যালোচনা করে এবং অনুরোধ অনুমোদন করে।
  3. Google এর প্রমাণীকরণ সার্ভার একটি অনুমোদন কোড সহ ব্রাউজারটিকে অ্যাপের HTTP এন্ডপয়েন্টে পুনঃনির্দেশ করে।
  4. অ্যাপ্লিকেশানটি Google এর অনুমোদন সার্ভারে একটি অ্যাক্সেস টোকেনের জন্য অনুমোদন কোড বিনিময় করার জন্য আরেকটি অনুরোধ পাঠায়৷
  5. অ্যাপ্লিকেশন ব্যবহারকারীর পক্ষে API কল করার জন্য অ্যাক্সেস টোকেন ব্যবহার করে।

OAuth অনুমোদন প্রক্রিয়া সম্পর্কে আরও জানতে, Google APIs গাইড অ্যাক্সেস করতে OAuth 2.0 ব্যবহার করা দেখুন।

Java, Python, এবং Node.js-এ নিম্নলিখিত কোড নমুনাগুলি OAuth অনুমোদন প্রবাহ চালানোর জন্য একটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে। এটি অনুমোদন সার্ভার থেকে অনুমোদন কোড ফিরে পাওয়ার জন্য একটি স্থানীয় HTTP সার্ভার খোলে, যা এটি একটি অ্যাক্সেস টোকেনের জন্য বিনিময় করে। অ্যাপস স্ক্রিপ্ট কোড নমুনায়, এই অনুমোদনের প্রবাহ অ্যাপস স্ক্রিপ্ট দ্বারা পরিচালিত হয়।

প্রমাণীকরণ প্রবাহ সম্পূর্ণ করার পরে, স্ক্রিপ্ট ব্যবহারকারীর অ্যাক্সেস টোকেন ব্যবহার করে চ্যাট API এর সাথে প্রমাণীকরণ করে এবং তারপর একটি স্থান তৈরি করে।

জাভা

  1. আপনার প্রকল্পের ডিরেক্টরিতে, src/main/java/com/google/chat/app/authsample/App.java ফাইলটি খুলুন।
  2. নিম্নলিখিত কোড দিয়ে App.java এর বিষয়বস্তু প্রতিস্থাপন করুন:

    package com.google.chat.app.authsample;
    
    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
    import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
    import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
    import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.HttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.client.util.store.FileDataStoreFactory;
    import com.google.api.services.chat.v1.HangoutsChat;
    import com.google.api.services.chat.v1.model.Space;
    
    import java.io.InputStreamReader;
    import java.util.Collection;
    import java.util.Collections;
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    public class App {
        // Application OAuth credentials.
        private static final String KEYS_RESOURCE_URI = "/client_secrets.json";
    
        // Define your app's authorization scopes.
        private static final Collection<String> SCOPES =
            Collections.singleton("https://www.googleapis.com/auth/chat.spaces.create");
    
        // Directory to store user credentials.
        private static final java.io.File DATA_STORE_DIR =
            new java.io.File(System.getProperty("user.home"), ".store/auth-sample-app");
    
        // Global instance of the JSON factory.
        private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
    
        // Global instance of the HTTP transport.
        private static HttpTransport httpTransport;
    
        // Global instance of the DataStoreFactory. The best practice is to make it a single
        // globally shared instance across your application.
        private static FileDataStoreFactory dataStoreFactory;
    
        public static void main( String[] args ) {
            try {
                // Run app.
                httpTransport = GoogleNetHttpTransport.newTrustedTransport();
                dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
                Credential userCredential = authorize();
                Space response = App.createChatSpace(userCredential);
                // Print details about the created space.
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * Authorizes the installed application to access user's protected data.
         */
        private static Credential authorize() throws Exception {
            // Load client secrets.
            GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
                new InputStreamReader(App.class.getResourceAsStream("/client_secrets.json")));
            // Set up authorization code flow.
            GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                httpTransport, JSON_FACTORY, clientSecrets, SCOPES)
                .setDataStoreFactory(dataStoreFactory)
                .build();
            // Authorize.
            return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
        }
    
        /**
         * Creates a Chat space.
         */
        private static Space createChatSpace(Credential userCredential) throws Exception {
            // Build the Chat API client and authenticate with the user account.
            HangoutsChat chatService = new HangoutsChat.Builder(
                httpTransport, JSON_FACTORY, userCredential)
                .setApplicationName("auth-sample-app")
                .build();
    
            // Create a Chat space.
            Space space = new Space()
                // To create a named space, set spaceType to SPACE.
                .setSpaceType("SPACE")
                // The user-visible name of the space.
                .setDisplayName("API-made");
            return chatService.spaces().create(space).execute();
        }
    }
    
  3. আপনার প্রকল্পের ডিরেক্টরির মধ্যে একটি নতুন সাব-ডিরেক্টরি নামে resources তৈরি করুন।

  4. resources সাবডিরেক্টরিতে client_secrets.json ফাইলটি কপি করুন।

  5. প্রোজেক্ট প্যাকেজে ক্লায়েন্ট সিক্রেট ফাইল অন্তর্ভুক্ত করার জন্য Maven কনফিগার করতে, আপনার প্রোজেক্টের ডিরেক্টরিতে pom.xml ফাইলটি সম্পাদনা করুন এবং <build> বিভাগে নিম্নলিখিত কনফিগারেশন যোগ করুন:

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. প্রোজেক্ট প্যাকেজে নির্ভরতা অন্তর্ভুক্ত করার জন্য এবং আপনার অ্যাপ্লিকেশনের প্রধান ক্লাস চালানোর জন্য Maven কনফিগার করতে, আপনার প্রকল্পের ডিরেক্টরিতে pom.xml ফাইলটি সম্পাদনা করুন এবং <plugins> বিভাগে নিম্নলিখিত কনফিগারেশন যোগ করুন:

    <plugins>
      <!-- ... existing configurations ... -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.google.chat.app.authsample.App</mainClass>
            </manifest>
          </archive>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
    

পাইথন

  1. chat_space_create_named.py নামের একটি ফাইলে নিম্নলিখিত কোডটি সংরক্ষণ করুন একই ডিরেক্টরিতে যা client_secrets.json ধারণ করে:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]
    
    def main():
      '''
      Authenticates with Chat API via user credentials,
      then creates a Chat space.
      '''
    
      flow = InstalledAppFlow.from_client_secrets_file(
                        'client_secrets.json', SCOPES)
      creds = flow.run_local_server()
    
      # Build a service endpoint for Chat API.
      service = build('chat', 'v1', credentials=creds)
    
      # Use the service endpoint to call Chat API.
      result = service.spaces().create(
    
        # Details about the space to create.
        body = {
    
          # To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          # The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      ).execute()
    
      # Prints details about the created space.
      print(result)
    
    if __name__ == '__main__':
      main()
    

Node.js

  1. নিম্নলিখিত কোডটি chat_space_create_named.js নামের একটি ফাইলে সেভ করুন একই ডিরেক্টরিতে যেখানে Node.js প্রোজেক্ট এবং client_secrets.json রয়েছে:

    const fs = require('fs');
    const path = require('path');
    const http = require('http');
    const url = require('url');
    const destroyer = require('server-destroy');
    
    const chat = require('@googleapis/chat');
    
    // Application OAuth credentials.
    const keys = require('./client_secrets.json').installed;
    
    // Define your app's authorization scopes.
    // When modifying these scopes, delete the file token.json, if it exists.
    const scopes = ["https://www.googleapis.com/auth/chat.spaces.create"];
    
    // Create a new OAuth2 client with the configured keys.
    const oauth2Client = new chat.auth.OAuth2(
      keys.client_id,
      keys.client_secret,
      'http://localhost:3000'
    );
    
    /**
     * Opens an HTTP server to accept the OAuth callback.
     * In this simple example, the only request to our webserver is to /?code=<code>.
     */
    async function authenticate(scopes) {
      const opn = (await import('open')).default;
    
      return new Promise((resolve, reject) => {
        // Generate the URL for authorization.
        const authorizeUrl = oauth2Client.generateAuthUrl({
          access_type: 'offline',
          scope: scopes.join(' '),
        });
        // Start the HTTP server to listen for the callback.
        const server = http
          .createServer(async (req, res) => {
            try {
              const qs = new url.URL(req.url, 'http://localhost:3000').searchParams;
              res.end('Authentication successful! Please return to the console.');
              server.destroy();
              const { tokens } = await oauth2Client.getToken(qs.get('code'));
              oauth2Client.credentials = tokens;
              resolve(oauth2Client);
            } catch (e) {
              reject(e);
            }
          })
          .listen(3000, () => {
            // Open the browser to the authorize URL to start the workflow.
            opn(authorizeUrl, { wait: false }).then(cp => cp.unref());
          });
        destroyer(server);
      });
    }
    
    /**
     * Authenticates with Chat API via user credentials, then creates a Chat space.
     */
    async function createSpace() {
      // Create the Chat API client and authenticate with the authorized user.
      const chatClient = await chat.chat({
        version: 'v1',
        auth: oauth2Client
      });
    
      // Call the Chat API to create a space.
      const result = await chatClient.spaces.create({
    
        // Details about the space to create.
        requestBody: {
    
          // To create a named space, set spaceType to SPACE.
          'spaceType': 'SPACE',
    
          // The user-visible name of the space.
          'displayName': 'API-made'
    
        }
    
      });
      return result;
    }
    
    // Authenticate the user, execute the function,
    // then print details about the created space.
    authenticate(scopes)
      .then(createSpace)
      .then(console.log);
    

অ্যাপস স্ক্রিপ্ট

  1. Apps স্ক্রিপ্ট এডিটরে, appsscript.json ফাইলটি সম্পাদনা করুন এবং API কল করার জন্য প্রয়োজনীয় OAuth স্কোপ যোগ করুন:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. আপনার Apps স্ক্রিপ্ট প্রকল্পে ChatSpaceCreateNamed.gs নামের একটি ফাইলে নিম্নলিখিত কোডটি সংরক্ষণ করুন:

    /**
     * Authenticates with Chat API via user credentials, then creates a
     * Chat space.
     */
    function createSpace() {
      try {
        // Details about the space to create.
        // To create a named space, set spaceType to SPACE.
        // The user-visible name of the space is displayName.
        const space = {'displayName': 'API-made', 'spaceType': 'SPACE'};
    
        // Call Chat API with user credentials to create the space.
        const result = Chat.Spaces.create(space);
    
        // Log details about the created space.
        console.log(result);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create space with error %s', err.message);
      }
    }
    

ধাপ 5: উদাহরণ স্ক্রিপ্ট চালান

উদাহরণটি চালানোর জন্য, কমান্ড লাইন থেকে, আপনার প্রকল্প ফাইলগুলি ধারণ করে এমন ডিরেক্টরিতে নেভিগেট করুন, তারপর নিম্নলিখিত কমান্ডটি চালান:

জাভা

mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar

পাইথন

python3 chat_space_create_named.py

Node.js

node chat_space_create_named.js

অ্যাপস স্ক্রিপ্ট

অ্যাপস স্ক্রিপ্ট এডিটরে ChatSpaceCreateNamed.gs ফাইলটি খুলুন এবং রান এ ক্লিক করুন।

একটি ব্রাউজার খোলে এবং আপনাকে আপনার Google অ্যাকাউন্টে সাইন ইন করার অনুরোধ জানায়:

একটি চ্যাট অ্যাপ অনুমোদন করতে সাইন ইন করা হচ্ছে।

চিত্র 2. OAuth সম্মতি স্ক্রীন যেখানে আপনি অ্যাপটি প্রমাণীকরণ করতে কোন অ্যাকাউন্ট নির্বাচন করবেন।

আপনি সাইন ইন করার পরে, OAuth সম্মতি স্ক্রীন উপস্থিত হয় এবং আপনাকে অ্যাপটিকে অনুমতি দিতে বলে।

আপনি অনুমতি দেওয়ার পরে, স্ক্রিপ্টটি চ্যাট API-কে কল করে, যা API-made প্রদর্শন নাম দিয়ে চ্যাট স্পেস তৈরি করে প্রতিক্রিয়া জানায়। কনসোল API কলের বিবরণ প্রিন্ট করে। স্পেস খুঁজতে, Google Chat-এর Spaces প্যানেলে যান।

উদাহরণের সমস্যা সমাধান করুন

chat_space_create_named.py চালানোর সময়, আপনি একটি ত্রুটি পেতে পারেন যা বলে:

Expected a JSON object with a single property for a "web" or "installed" application

এই ত্রুটি বার্তাটির অর্থ হল যে client_secrets.json ফাইলটি আপনি Google ক্লাউড কনসোল থেকে ডাউনলোড করেছেন সেটি "web" বা "installed" বৈশিষ্ট্য দিয়ে শুরু হয় না৷ ডাউনলোড করা ফাইলের সাথে প্রমাণীকরণের পরে, যদি আপনার কোডটি token.json এর মতো একটি নতুন ফাইলে অ্যাক্সেস টোকেন সংরক্ষণ না করে, তাহলে অ্যাক্সেস টোকেনটি client_secrets.json এ লেখা হয়, যা পরবর্তী অনুমোদনের প্রচেষ্টার সময় এই ত্রুটির কারণ হতে পারে।

ত্রুটিটি সমাধান করতে, Google ক্লাউড কনসোল থেকে ক্লায়েন্ট গোপন ফাইলটি আবার ডাউনলোড করুন এবং বর্তমান ফাইলের জায়গায় নতুন ফাইলটি সংরক্ষণ করুন৷

  • যদি আপনার অ্যাপ্লিকেশনটিকে একটি একক প্রবাহের সুযোগের বাইরে ব্যবহারকারী টোকেনগুলি ব্যবহার করা চালিয়ে যেতে হয়, তবে এটি টোকেনগুলিকে পরে পুনরায় ব্যবহার করার জন্য সংরক্ষণ করতে পারে৷ এই ক্ষেত্রে, আপনার অ্যাপ্লিকেশনকে ব্যবহারকারীর টোকেনগুলিকে নিরাপদে পরিচালনা করতে হবে এবং রিফ্রেশ টোকেন প্রত্যাহার এবং মেয়াদ শেষ করতে হবে। আরও তথ্যের জন্য, OAuth 2.0 ব্যবহার করার সর্বোত্তম অনুশীলন নির্দেশিকা দেখুন।

  • Chat API রেফারেন্স ডকুমেন্টেশন পর্যালোচনা করে Chat API আর কি করতে পারে তা জানুন।