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

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

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

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

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

গুগল চ্যাট অ্যাপ ব্যবহারকারীর জন্য একটি পরিসর তৈরি করে।
চিত্র ১। কোনো চ্যাট অ্যাপ যখন কোনো ব্যবহারকারীর পক্ষ থেকে একটি স্পেস তৈরি করে, তখন গুগল চ্যাট যে অ্যাট্রিবিউশন বার্তাটি প্রদর্শন করে।

চ্যাট অ্যাপে কখন অথেনটিকেশনের প্রয়োজন হয় এবং কী ধরনের অথেনটিকেশন ব্যবহার করতে হবে, সে সম্পর্কে আরও জানতে, চ্যাট এপিআই অথেনটিকেশন এবং অথরাইজেশন ওভারভিউ-এর মধ্যে ‘প্রয়োজনীয় অথেনটিকেশনের প্রকারভেদ’ দেখুন।

গুগল ওয়ার্কস্পেস প্রশাসক হিসেবে প্রমাণীকরণ ও অনুমোদন করুন

এই বিভাগে ব্যাখ্যা করা হয়েছে, কীভাবে গুগল ওয়ার্কস্পেস অ্যাডমিনিস্ট্রেটররা ব্যবহারকারী প্রমাণীকরণের মাধ্যমে তাদের প্রতিষ্ঠান জুড়ে গুগল চ্যাট অ্যাপ এবং স্পেসগুলো পরিচালনা করতে পারেন।

ডোমেন-ব্যাপী ডেলিগেশন ব্যবহার করে প্রমাণীকরণ এবং অনুমোদন করুন

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

প্রশাসক বিশেষাধিকার ব্যবহার করে প্রমাণীকরণ ও অনুমোদন করুন

আপনি যদি একজন ডোমেইন অ্যাডমিনিস্ট্রেটর অথবা অ্যাডমিনিস্ট্রেটর প্রিভিলেজসহ একজন ডেলিগেটেড অ্যাডমিনিস্ট্রেটর হন, তাহলে প্রযোজ্য মেথডগুলোর রিকোয়েস্টে useAdminAccess ফিল্ডটি সেট করার মাধ্যমে আপনি অ্যাডমিনিস্ট্রেটর প্রিভিলেজসহ গুগল চ্যাট এপিআই-তে আপনার কলগুলোকে অথেন্টিকেট ও অথরাইজ করতে পারেন। আরও তথ্যের জন্য, এপিআই রেফারেন্স ডকুমেন্টেশন দেখুন।

উল্লেখ্য যে, যখন কোনো গুগল চ্যাট অ্যাপ অ্যাডমিনিস্ট্রেটর প্রিভিলেজ ব্যবহার করে কোনো কাজ করে, তখন চ্যাট ব্যবহারকারীদের সেই কাজটি সম্পাদনকারী অ্যাপটির নাম বা অনুমোদনকারী অ্যাডমিনিস্ট্রেটরের নাম জানায় না, বরং শুধু এটুকুই জানায় যে কাজটি তাদের প্রতিষ্ঠানের অ্যাডমিনিস্ট্রেটর দ্বারা সম্পাদিত হয়েছে।

পূর্বশর্ত

জাভা

পাইথন

নোড.জেএস

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

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

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

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

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ব্র্যান্ডিং- এ যান।

    ব্র্যান্ডিং-এ যান

  2. আপনি যদি ইতিমধ্যেই Google Auth প্ল্যাটফর্মটি কনফিগার করে থাকেন, তাহলে আপনি Branding , Audience , এবং Data Access- এ নিম্নলিখিত OAuth Consent Screen সেটিংস কনফিগার করতে পারেন। যদি আপনি এমন কোনো বার্তা দেখতে পান যেখানে লেখা আছে ‘Google Auth প্ল্যাটফর্ম এখনও কনফিগার করা হয়নি’ , তাহলে Get Started-এ ক্লিক করুন:

    1. অ্যাপ ইনফরমেশন-এর অধীনে অ্যাপ নেম অংশে একটি অ্যাপের নাম লিখুন।
    2. ব্যবহারকারী সহায়তা ইমেল- এ, এমন একটি সহায়তা ইমেল ঠিকানা বেছে নিন যেখানে ব্যবহারকারীরা তাদের সম্মতি সম্পর্কে কোনো প্রশ্ন থাকলে আপনার সাথে যোগাযোগ করতে পারে।
    3. পরবর্তী ধাপে যান।
    4. Audience-এর অধীনে, Internal নির্বাচন করুন। যদি আপনি Internal নির্বাচন করতে না পারেন, তাহলে External নির্বাচন করুন।
    5. পরবর্তী ধাপে যান।
    6. যোগাযোগের তথ্যের অধীনে, একটি ইমেল ঠিকানা লিখুন যেখানে আপনার প্রকল্পের যেকোনো পরিবর্তন সম্পর্কে আপনাকে জানানো যাবে।
    7. পরবর্তী ধাপে যান।
    8. Finish-এর অধীনে, Google API Services ব্যবহারকারীর ডেটা নীতি পর্যালোচনা করুন এবং যদি আপনি সম্মত হন, তাহলে I agree to the Google API Services: User Data Policy নির্বাচন করুন।
    9. চালিয়ে যান-এ ক্লিক করুন।
    10. তৈরি করুন- এ ক্লিক করুন।
    11. যদি আপনি ব্যবহারকারীর ধরন হিসেবে 'এক্সটার্নাল' নির্বাচন করে থাকেন, তাহলে পরীক্ষামূলক ব্যবহারকারী যোগ করুন:
      1. দর্শকবৃন্দে ক্লিক করুন।
      2. টেস্ট ইউজার্স-এর অধীনে, অ্যাড ইউজার্স-এ ক্লিক করুন।
      3. আপনার ইমেল ঠিকানা এবং অন্য কোনো অনুমোদিত পরীক্ষামূলক ব্যবহারকারীর তথ্য প্রবেশ করান, তারপর সেভ-এ ক্লিক করুন।
  3. ডেটা অ্যাক্সেস > স্কোপ যোগ বা অপসারণ-এ ক্লিক করুন। একটি প্যানেল প্রদর্শিত হবে, যেখানে আপনার গুগল ক্লাউড প্রজেক্টে সক্রিয় করা প্রতিটি এপিআই-এর স্কোপের একটি তালিকা থাকবে।

    1. ‘ম্যানুয়ালি অ্যাড স্কোপস’ (Manually add scopes) -এর অধীনে https://www.googleapis.com/auth/chat.spaces.create পেস্ট করুন, যা এই গাইডের অথেনটিকেশন উদাহরণটি চালানোর জন্য প্রয়োজন। চ্যাট এপিআই-এর জন্য উপলব্ধ স্কোপগুলো পর্যালোচনা করতে, অথেনটিকেশন ওভারভিউ-এর মধ্যে ‘চ্যাট এপিআই স্কোপস’ (Chat API Scopes) দেখুন।
    2. টেবিলে যোগ করুন-এ ক্লিক করুন।
    3. আপডেট-এ ক্লিক করুন।
    4. আপনার অ্যাপের জন্য প্রয়োজনীয় পরিধিগুলো নির্বাচন করার পর, ডেটা অ্যাক্সেস পৃষ্ঠায়, সেভ-এ ক্লিক করুন।

ধাপ ২: গুগল এপিআই কনসোলে OAuth ক্লায়েন্ট আইডি ক্রেডেনশিয়াল তৈরি করুন।

আপনার অ্যাপে একজন এন্ড ইউজার হিসেবে অথেন্টিকেট করতে এবং ইউজার ডেটা অ্যাক্সেস করতে, আপনাকে এক বা একাধিক OAuth 2.0 ক্লায়েন্ট আইডি তৈরি করতে হবে। গুগলের OAuth সার্ভারের কাছে একটি একক অ্যাপকে শনাক্ত করতে ক্লায়েন্ট আইডি ব্যবহৃত হয়। যদি আপনার অ্যাপ একাধিক প্ল্যাটফর্মে—যেমন অ্যান্ড্রয়েড, আইওএস এবং ওয়েব—চলে, তবে আপনাকে প্রতিটি প্ল্যাটফর্মের জন্য একটি আলাদা ক্লায়েন্ট আইডি তৈরি করতে হবে।

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

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

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

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ যান।

    ক্লায়েন্টদের কাছে যান

  2. ক্লায়েন্ট তৈরি করুন -এ ক্লিক করুন।
  3. অ্যাপ্লিকেশন টাইপ > ওয়েব অ্যাপ্লিকেশন-এ ক্লিক করুন।
  4. Name ফিল্ডে ক্রেডেনশিয়ালটির জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google API Console-এ দেখানো হয়।
  5. আপনার অ্যাপ সম্পর্কিত অনুমোদিত URI-গুলো যোগ করুন:
    • ক্লায়েন্ট-সাইড অ্যাপস (জাভাস্ক্রিপ্ট) – ‘Authorized JavaScript origins’-এর অধীনে, ‘Add URI’-তে ক্লিক করুন। এরপর, ব্রাউজার রিকোয়েস্টের জন্য ব্যবহার করার উদ্দেশ্যে একটি URI লিখুন। এটি সেই ডোমেইনগুলোকে শনাক্ত করে, যেখান থেকে আপনার অ্যাপ্লিকেশন OAuth 2.0 সার্ভারে API রিকোয়েস্ট পাঠাতে পারবে।
    • সার্ভার-সাইড অ্যাপস (জাভা, পাইথন এবং আরও)‘Authorized redirect URIs’-এর অধীনে, ‘Add URI’-তে ক্লিক করুন। এরপর, একটি এন্ডপয়েন্ট URI লিখুন যেখানে OAuth 2.0 সার্ভার প্রতিক্রিয়া পাঠাতে পারবে।
  6. তৈরি করুন- এ ক্লিক করুন।

    নতুন তৈরি করা ক্রেডেনশিয়ালটি OAuth 2.0 ক্লায়েন্ট আইডি-এর অধীনে দেখা যায়।

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

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

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ যান।

    ক্লায়েন্টদের কাছে যান

  2. ক্লায়েন্ট তৈরি করুন -এ ক্লিক করুন।
  3. অ্যাপ্লিকেশন টাইপ > অ্যান্ড্রয়েড-এ ক্লিক করুন।
  4. "Name" ফিল্ডে ক্রেডেনশিয়ালটির জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র গুগল এপিআই কনসোলে দেখানো হয়।
  5. 'প্যাকেজ নেম' ফিল্ডে আপনার AndroidManifest.xml ফাইল থেকে প্যাকেজ নেমটি লিখুন।
  6. 'SHA-1 সার্টিফিকেট ফিঙ্গারপ্রিন্ট' ফিল্ডে, আপনার জেনারেট করা SHA-1 সার্টিফিকেট ফিঙ্গারপ্রিন্টটি প্রবেশ করান।
  7. তৈরি করুন- এ ক্লিক করুন।

    নতুন তৈরি করা ক্রেডেনশিয়ালটি "OAuth 2.0 ক্লায়েন্ট আইডি" এর অধীনে দেখা যায়।

আইওএস

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ যান।

    ক্লায়েন্টদের কাছে যান

  2. ক্লায়েন্ট তৈরি করুন -এ ক্লিক করুন।
  3. অ্যাপ্লিকেশন টাইপ > iOS-এ ক্লিক করুন।
  4. "Name" ফিল্ডে ক্রেডেনশিয়ালটির জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র গুগল এপিআই কনসোলে দেখানো হয়।
  5. "বান্ডেল আইডি" ফিল্ডে, অ্যাপের Info.plist ফাইলে তালিকাভুক্ত বান্ডেল আইডেন্টিফায়ারটি লিখুন।
  6. ঐচ্ছিক: যদি আপনার অ্যাপটি অ্যাপল অ্যাপ স্টোরে থাকে, তাহলে অ্যাপ স্টোর আইডিটি লিখুন।
  7. ঐচ্ছিক: "টিম আইডি" ফিল্ডে, অ্যাপল দ্বারা তৈরি এবং আপনার টিমকে বরাদ্দ করা অনন্য ১০-অক্ষরের স্ট্রিংটি লিখুন।
  8. তৈরি করুন- এ ক্লিক করুন।

    নতুন তৈরি করা ক্রেডেনশিয়ালটি "OAuth 2.0 ক্লায়েন্ট আইডি" এর অধীনে দেখা যায়।

ক্রোম অ্যাপ

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ যান।

    ক্লায়েন্টদের কাছে যান

  2. ক্লায়েন্ট তৈরি করুন -এ ক্লিক করুন।
  3. অ্যাপ্লিকেশন টাইপ > ক্রোম এক্সটেনশন-এ ক্লিক করুন।
  4. "Name" ফিল্ডে ক্রেডেনশিয়ালটির জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র গুগল এপিআই কনসোলে দেখানো হয়।
  5. "আইটেম আইডি" ফিল্ডে আপনার অ্যাপের অনন্য ৩২-অক্ষরের আইডি স্ট্রিংটি লিখুন। এই আইডি ভ্যালুটি আপনি আপনার অ্যাপের ক্রোম ওয়েব স্টোর ইউআরএল-এ এবং ক্রোম ওয়েব স্টোর ডেভেলপার ড্যাশবোর্ডে খুঁজে পাবেন।
  6. তৈরি করুন- এ ক্লিক করুন।

    নতুন তৈরি করা ক্রেডেনশিয়ালটি "OAuth 2.0 ক্লায়েন্ট আইডি" এর অধীনে দেখা যায়।

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

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ যান।

    ক্লায়েন্টদের কাছে যান

  2. ক্লায়েন্ট তৈরি করুন -এ ক্লিক করুন।
  3. অ্যাপ্লিকেশন টাইপ > ডেস্কটপ অ্যাপ-এ ক্লিক করুন।
  4. Name ফিল্ডে ক্রেডেনশিয়ালটির জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google API Console-এ দেখানো হয়।
  5. তৈরি করুন- এ ক্লিক করুন।

    নতুন তৈরি করা ক্রেডেনশিয়ালটি "OAuth 2.0 ক্লায়েন্ট আইডি" এর অধীনে দেখা যায়।

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

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ যান।

    ক্লায়েন্টদের কাছে যান

  2. ক্লায়েন্ট তৈরি করুন -এ ক্লিক করুন।
  3. অ্যাপ্লিকেশন টাইপ > টিভি এবং সীমিত ইনপুট ডিভাইস-এ ক্লিক করুন।
  4. "Name" ফিল্ডে ক্রেডেনশিয়ালটির জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র গুগল এপিআই কনসোলে দেখানো হয়।
  5. তৈরি করুন- এ ক্লিক করুন।

    নতুন তৈরি করা ক্রেডেনশিয়ালটি "OAuth 2.0 ক্লায়েন্ট আইডি" এর অধীনে দেখা যায়।

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

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ যান।

    ক্লায়েন্টদের কাছে যান

  2. ক্লায়েন্ট তৈরি করুন -এ ক্লিক করুন।
  3. অ্যাপ্লিকেশন টাইপ > ইউনিভার্সাল উইন্ডোজ প্ল্যাটফর্ম (UWP)- এ ক্লিক করুন।
  4. "Name" ফিল্ডে ক্রেডেনশিয়ালটির জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র গুগল এপিআই কনসোলে দেখানো হয়।
  5. "স্টোর আইডি" ফিল্ডে আপনার অ্যাপের অনন্য, ১২-অক্ষরের মাইক্রোসফট স্টোর আইডিটি লিখুন। আপনি এই আইডিটি আপনার অ্যাপের মাইক্রোসফট স্টোর ইউআরএল-এ এবং পার্টনার সেন্টারে খুঁজে পাবেন।
  6. তৈরি করুন- এ ক্লিক করুন।

    নতুন তৈরি করা ক্রেডেনশিয়ালটি "OAuth 2.0 ক্লায়েন্ট আইডি" এর অধীনে দেখা যায়।

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

ক্লায়েন্ট সিক্রেট ফাইল হলো OAuth ক্লায়েন্ট আইডি ক্রেডেনশিয়ালগুলির একটি JSON উপস্থাপনা, যা আপনার চ্যাট অ্যাপ ক্রেডেনশিয়াল প্রদান করার সময় রেফারেন্স হিসেবে ব্যবহার করতে পারে।

  1. Google API Console-এ, > APIs & Services > Credentials- এ যান।

    পরিচয়পত্রে যান

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

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

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

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

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

জাভা

আপনার 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>

পাইথন

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

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

নোড.জেএস

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

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

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

এই নমুনাটি গুগল চ্যাট এপিআই কল করার জন্য অ্যাডভান্সড চ্যাট সার্ভিস ব্যবহার করে। আপনার অ্যাপস স্ক্রিপ্ট প্রোজেক্টের জন্য সার্ভিসটি চালু করতে:

  1. বাম দিকে, ‘এডিটর ক্লিক করুন।
  2. বাম দিকে, Services-এর পাশে, Add a service-এ করুন।
  3. গুগল চ্যাট এপিআই নির্বাচন করুন।
  4. ভার্সন- এ, v1 নির্বাচন করুন।
  5. যোগ করুন-এ ক্লিক করুন।

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

ধাপ ৪: একটি স্ক্রিপ্ট লিখুন যা চ্যাট এপিআই (Chat API)-কে কল করবে।

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

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

OAuth অনুমোদন প্রক্রিয়া সম্পর্কে আরও জানতে, “Using OAuth 2.0 to Access Google APIs Guide” দেখুন।

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

প্রমাণীকরণ প্রক্রিয়া সম্পন্ন হওয়ার পর, স্ক্রিপ্টটি ব্যবহারকারীর অ্যাক্সেস টোকেন ব্যবহার করে চ্যাট এপিআই-এর সাথে প্রমাণীকরণ করে এবং তারপর একটি স্পেস তৈরি করে।

জাভা

  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 = "/credentials.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("/credentials.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. credentials.json ফাইলটি resources সাবডিরেক্টরিতে কপি করুন।

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

    <build>
      <!-- ... existing configurations ... -->
      <resources>
        <resource>
          <directory>resources</directory>
        </resource>
      </resources>
    </build>
    
  6. To configure Maven to include the dependencies in the project package and to execute your application's main class, edit the file pom.xml in your project's directory and add the following configuration to the <plugins> section:

    <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. credentials.json যে ডিরেক্টরিতে রয়েছে, সেই একই ডিরেক্টরিতে chat_space_create_named.py নামের একটি ফাইলে নিম্নলিখিত কোডটি সংরক্ষণ করুন:

    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(
                        'credentials.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()
    

নোড.জেএস

  1. নিম্নলিখিত কোডটি Node.js প্রজেক্ট এবং credentials.json ফাইল থাকা একই ডিরেক্টরিতে chat_space_create_named.js নামের একটি ফাইলে সংরক্ষণ করুন:

    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('./credentials.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. অ্যাপস স্ক্রিপ্ট এডিটরে, appsscript.json ফাইলটি সম্পাদনা করুন এবং API কল করার জন্য প্রয়োজনীয় OAuth স্কোপ যোগ করুন:

      "oauthScopes": [
        "https://www.googleapis.com/auth/chat.spaces.create"
      ]
    
  2. নিম্নলিখিত কোডটি আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টের 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);
      }
    }
    

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

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

জাভা

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

পাইথন

python3 chat_space_create_named.py

নোড.জেএস

node chat_space_create_named.js

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

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

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

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

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

সাইন ইন করার পর, OAuth সম্মতি স্ক্রিনটি প্রদর্শিত হয় এবং অ্যাপটিকে অনুমতি দেওয়ার জন্য আপনাকে অনুরোধ করে।

আপনি অনুমতি দেওয়ার পর, স্ক্রিপ্টটি চ্যাট এপিআই-কে কল করে, যা তার জবাবে API-made ডিসপ্লে নাম দিয়ে একটি চ্যাট স্পেস তৈরি করে। কনসোলে এপিআই কলের বিস্তারিত তথ্য প্রিন্ট করা হয়। স্পেসটি খুঁজে পেতে, গুগল চ্যাটের স্পেসেস প্যানেলে যান।

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

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

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

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

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