১. গুগল ওয়ার্কস্পেস এপিআই ব্যবহার করা
এই কোডল্যাবটি আপনাকে গুগল ওয়ার্কস্পেস (পূর্বের নাম জি স্যুট) এর HTTP-ভিত্তিক RESTful API ব্যবহার করার সাথে পরিচয় করিয়ে দেবে। উদাহরণটি সংক্ষিপ্ততা এবং সহজলভ্যতার জন্য পাইথনে করা হবে, তবে আপনি আপনার পছন্দের ডেভেলপমেন্ট ল্যাঙ্গুয়েজও ব্যবহার করতে পারেন। আপনাকে কিছু প্রাথমিক বিষয়ের সাথে পরিচিত করানো হবে, যেমন ডেভেলপার কনসোল ব্যবহার করে কীভাবে প্রজেক্ট তৈরি/পরিচালনা করতে হয়, অথরাইজেশন ক্রেডেনশিয়াল সংগ্রহ করা এবং API ক্লায়েন্ট লাইব্রেরি ইনস্টল করা। এই আনুষ্ঠানিকতাগুলো সম্পন্ন হয়ে গেলে, আপনি গুগল ড্রাইভের API ব্যবহার করে প্রথম ১০০টি ফাইল ও ফোল্ডার প্রদর্শন করার জন্য একটি অ্যাপ লিখবেন।
আপনি যা শিখবেন
- গুগল/ক্লাউড ডেভেলপার কনসোল ব্যবহার করে একটি প্রজেক্ট তৈরি করুন।
- আপনার অ্যাপে OAuth2 অ্যাপ্লিকেশন ক্রেডেনশিয়াল সংগ্রহ ও ব্যবহার করুন
- গুগল এপিআই ক্লায়েন্ট লাইব্রেরি ব্যবহার সম্পর্কে জানুন
- গুগল ও গুগল ওয়ার্কস্পেস এপিআই ব্যবহার করে অ্যাপ্লিকেশন লিখুন
- গুগল ড্রাইভ এপিআই ব্যবহার করে ফাইল ও ফোল্ডারের তথ্য সংগ্রহ করুন।
আপনার যা যা লাগবে
- ইন্টারনেট এবং একটি ওয়েব ব্রাউজারে প্রবেশাধিকার
- একটি গুগল অ্যাকাউন্ট (গুগল ওয়ার্কস্পেস অ্যাকাউন্টের জন্য প্রশাসকের অনুমোদনের প্রয়োজন হতে পারে)
- Linux এবং Mac OS X-এর মতো POSIX-সম্মত সিস্টেমের সাথে পরিচিতি
- কোড এডিটর অথবা শেল কমান্ড ব্যবহার করে সোর্স ফাইল তৈরি করার ক্ষমতা।
- পাইথনে প্রাথমিক দক্ষতা (২ বা ৩) থাকতে হবে, তবে আপনি যেকোনো সমর্থিত ভাষা ব্যবহার করতে পারেন।
- আপনার গুগল ড্রাইভে কিছু ফাইল এবং/অথবা ফোল্ডার
২. জরিপ
আপনি এই কোডল্যাব টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
গুগল ওয়ার্কস্পেস ডেভেলপার টুলস ও এপিআই ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
৩. সংক্ষিপ্ত বিবরণ
এই কোডল্যাবে আপনি শিখবেন কীভাবে:
- পাইথনের জন্য গুগল এপিআই ক্লায়েন্ট লাইব্রেরি ডাউনলোড করুন
- Google/Cloud ডেভেলপার কনসোলে একটি নতুন প্রজেক্ট তৈরি করুন
- আপনার অ্যাপের জন্য প্রয়োজনীয় পরিচয়পত্র সংগ্রহ করুন।
- গুগল ড্রাইভ এপিআই অ্যাক্সেস করতে সেই ক্রেডেনশিয়ালগুলো ব্যবহার করুন।
আপনি যদি পাইথন ব্যবহার করতে না চান, তবে আপনার পছন্দের ডেভেলপমেন্ট টুলে কোডল্যাবটি তৈরি করতে পারেন (সমর্থিত ভাষাগুলোর ক্লায়েন্ট লাইব্রেরি এখানে পাওয়া যাবে) এবং পাইথনের উদাহরণগুলোকে (এক্সিকিউটেবল) সিউডোকোড হিসেবে ব্যবহার করতে পারেন।
৪. পাইথন পরিবেশ নিশ্চিত করুন
এই কোডল্যাবটির জন্য আপনাকে পাইথন ভাষা ব্যবহার করতে হবে (যদিও গুগল এপিআই ক্লায়েন্ট লাইব্রেরিগুলো অনেক ভাষাই সমর্থন করে , তাই আপনি আপনার পছন্দের ডেভেলপমেন্ট টুলে এর সমতুল্য কিছু তৈরি করে নিতে পারেন এবং পাইথন কোডটিকে শুধু সিউডোকোড হিসেবে ব্যবহার করতে পারেন)। বিশেষত, এই কোডল্যাবটি পাইথন ২ এবং ৩ সমর্থন করে, কিন্তু আমরা যত তাড়াতাড়ি সম্ভব ৩.x সংস্করণে আপগ্রেড করার পরামর্শ দিই।
ক্লাউড শেল হলো ক্লাউড কনসোল থেকে সরাসরি ব্যবহারকারীদের জন্য উপলব্ধ একটি সুবিধা এবং এর জন্য কোনো লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টের প্রয়োজন হয় না, তাই এই টিউটোরিয়ালটি একটি ওয়েব ব্রাউজার ব্যবহার করে সম্পূর্ণ ক্লাউডেই করা সম্ভব। আপনি যদি GCP প্রোডাক্ট ও API ব্যবহার করে ডেভেলপ করেন বা ভবিষ্যতেও ডেভেলপ করার পরিকল্পনা করেন, তাহলে ক্লাউড শেল বিশেষভাবে উপযোগী। আরও নির্দিষ্টভাবে বললে, এই কোডল্যাবের জন্য ক্লাউড শেলে পাইথনের উভয় সংস্করণই আগে থেকে ইনস্টল করা আছে।
ক্লাউড শেলে আইপাইথনও ইনস্টল করা আছে... এটি একটি উচ্চ-স্তরের ইন্টারেক্টিভ পাইথন ইন্টারপ্রেটার যা আমরা সুপারিশ করি, বিশেষ করে যদি আপনি ডেটা সায়েন্স বা মেশিন লার্নিং কমিউনিটির অংশ হন। সেক্ষেত্রে, আইপাইথন হলো জুপিটার নোটবুক , কোলাব এবং গুগল রিসার্চ দ্বারা হোস্ট করা জুপিটার নোটবুকগুলোর ডিফল্ট ইন্টারপ্রেটার।
IPython প্রথমে পাইথন ৩ ইন্টারপ্রেটার ব্যবহার করতে পছন্দ করে, কিন্তু ৩.x সংস্করণটি উপলব্ধ না থাকলে এটি পাইথন ২-এ ফিরে যায়। ক্লাউড শেল থেকে IPython ব্যবহার করা যায়, তবে এটি একটি স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টেও ইনস্টল করা যেতে পারে। ^D (Ctrl-d) চেপে এটি থেকে বের হতে পারেন এবং বের হওয়ার অফারটি গ্রহণ করুন। ipython চালু করার উদাহরণ আউটপুটটি দেখতে এইরকম হবে:
$ ipython Python 3.7.3 (default, Mar 4 2020, 23:11:43) Type 'copyright', 'credits' or 'license' for more information IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help. In [1]:
যদি IPython আপনার পছন্দ না হয়, তবে একটি স্ট্যান্ডার্ড পাইথন ইন্টারেক্টিভ ইন্টারপ্রেটার (ক্লাউড শেল অথবা আপনার লোকাল ডেভেলপমেন্ট এনভায়রনমেন্ট) ব্যবহার করা সম্পূর্ণ গ্রহণযোগ্য (এছাড়াও ^D চেপে বের হবেন):
$ python Python 2.7.13 (default, Sep 26 2018, 18:42:22) [GCC 6.3.0 20170516] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> $ python3 Python 3.7.3 (default, Mar 10 2020, 02:33:39) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
এই কোডল্যাবটি ব্যবহারের জন্য আপনার কাছে pip ইনস্টলেশন টুল (পাইথন প্যাকেজ ম্যানেজার এবং ডিপেন্ডেন্সি রিজলভার) আছে বলে ধরে নেওয়া হচ্ছে। এটি ২.৭.৯+ বা ৩.৪+ ভার্সনের সাথে বান্ডেল হিসেবে আসে। আপনার কাছে যদি এর চেয়ে পুরোনো কোনো পাইথন ভার্সন থাকে, তবে ইনস্টলেশনের নির্দেশাবলীর জন্য এই গাইডটি দেখুন। আপনার পারমিশনের ওপর নির্ভর করে sudo বা superuser অ্যাক্সেসের প্রয়োজন হতে পারে, তবে সাধারণত এর প্রয়োজন হয় না। এছাড়াও, নির্দিষ্ট পাইথন ভার্সনের জন্য pip চালাতে আপনি স্পষ্টভাবে pip2 বা pip3 ব্যবহার করতে পারেন।
কোডল্যাবের বাকি অংশের জন্য ধরে নেওয়া হচ্ছে যে আপনি পাইথন ৩ ব্যবহার করছেন—যদি পাইথন ৩.x থেকে এর নির্দেশাবলীতে উল্লেখযোগ্য পার্থক্য থাকে, তবে পাইথন ২-এর জন্য নির্দিষ্ট নির্দেশাবলী প্রদান করা হবে।
ভার্চুয়াল পরিবেশ তৈরি ও ব্যবহার করুন
এই অংশটি ঐচ্ছিক এবং শুধুমাত্র তাদের জন্যই প্রয়োজন, যাদের এই কোডল্যাবের জন্য একটি ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করতেই হবে (উপরের সতর্কীকরণ সাইডবার অনুযায়ী)। যদি আপনার কম্পিউটারে শুধু পাইথন ৩ থাকে, তাহলে আপনি my_env নামের একটি ভার্চুয়ালএনভ তৈরি করতে কেবল এই কমান্ডটি ব্যবহার করতে পারেন (ইচ্ছা হলে অন্য কোনো নামও বেছে নিতে পারেন):
virtualenv my_env
তবে, যদি আপনার কম্পিউটারে পাইথন ২ এবং ৩ উভয়ই থাকে, তাহলে আমরা আপনাকে একটি পাইথন ৩ ভার্চুয়ালএনভ (virtualenv) ইনস্টল করার পরামর্শ দিই, যা আপনি -p flag ব্যবহার করে এইভাবে করতে পারেন:
virtualenv -p python3 my_env
এইভাবে আপনার নতুন তৈরি করা ভার্চুয়ালএনভ 'অ্যাক্টিভেট' করে প্রবেশ করুন:
source my_env/bin/activate
আপনি যে নির্দিষ্ট পরিবেশে আছেন তা নিশ্চিত করতে লক্ষ্য করুন যে আপনার শেল প্রম্পটের শুরুতে এখন আপনার পরিবেশের নামটি দেখা যাচ্ছে, যেমন,
(my_env) $
এখন আপনি pip install , এই এনভায়রনমেন্টের মধ্যে কোড চালাতে, ইত্যাদি সক্ষম হবেন। এর আরেকটি সুবিধা হলো, যদি আপনি সবকিছু পুরোপুরি এলোমেলো করে ফেলেন, বা এমন কোনো পরিস্থিতিতে পড়েন যেখানে আপনার পাইথন ইনস্টলেশনটি করাপ্টেড হয়ে গেছে, ইত্যাদি, তাহলে আপনি আপনার সিস্টেমের বাকি অংশকে প্রভাবিত না করেই এই সম্পূর্ণ এনভায়রনমেন্টটি মুছে ফেলতে পারবেন।
৫. পাইথনের জন্য গুগল এপিআই ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন।
এই কোডল্যাবটি ব্যবহারের জন্য পাইথনের গুগল এপিআই ক্লায়েন্ট লাইব্রেরি প্রয়োজন, তাই এটি ইনস্টল করা খুব সহজ, অথবা আপনাকে হয়তো কিছুই করতে হবে না।
সুবিধার জন্য আমরা আগেই আপনাকে ক্লাউড শেল ব্যবহার করার পরামর্শ দিয়েছিলাম। আপনি ক্লাউডের একটি ওয়েব ব্রাউজার থেকেই সম্পূর্ণ টিউটোরিয়ালটি শেষ করতে পারবেন। ক্লাউড শেল ব্যবহার করার আরেকটি কারণ হলো, অনেক জনপ্রিয় ডেভেলপমেন্ট টুল এবং প্রয়োজনীয় লাইব্রেরি এতে আগে থেকেই ইনস্টল করা থাকে।
ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন
( ঐচ্ছিক ) আপনি যদি ক্লাউড শেল বা এমন কোনো লোকাল এনভায়রনমেন্ট ব্যবহার করেন যেখানে ক্লায়েন্ট লাইব্রেরিগুলো আগে থেকেই ইনস্টল করা আছে, তাহলে এটি বাদ দেওয়া যেতে পারে। আপনাকে কেবল তখনই এটি করতে হবে, যখন আপনি লোকালি ডেভেলপ করছেন এবং সেগুলো ইনস্টল করেননি (বা করেছেন কিনা সে বিষয়ে নিশ্চিত নন)। সবচেয়ে সহজ উপায় হলো pip (বা pip3 ) ব্যবহার করে ইনস্টল করা (প্রয়োজনে pip কে আপডেট করা সহ):
pip install -U pip google-api-python-client oauth2client
ইনস্টলেশন নিশ্চিত করুন
এই কমান্ডটি ক্লায়েন্ট লাইব্রেরি এবং এর উপর নির্ভরশীল সমস্ত প্যাকেজ ইনস্টল করে। আপনি ক্লাউড শেল বা আপনার নিজস্ব পরিবেশ ব্যবহার করছেন কিনা, তা নির্বিশেষে, প্রয়োজনীয় প্যাকেজগুলি ইম্পোর্ট করে ক্লায়েন্ট লাইব্রেরিটি ইনস্টল হয়েছে কিনা তা যাচাই করুন এবং নিশ্চিত করুন যে কোনও ইম্পোর্ট ত্রুটি (বা আউটপুট) নেই:
python3 -c "import googleapiclient, httplib2, oauth2client"
এর পরিবর্তে আপনি যদি পাইথন ২ ব্যবহার করেন (ক্লাউড শেল থেকে), তাহলে আপনি একটি সতর্কবার্তা পাবেন যে এটির জন্য সমর্থন বাতিল করা হয়েছে:
******************************************************************************* Python 2 is deprecated. Upgrade to Python 3 as soon as possible. See https://cloud.google.com/python/docs/python2-sunset To suppress this warning, create an empty ~/.cloudshell/no-python-warning file. The command will automatically proceed in seconds or on any key. *******************************************************************************
একবার আপনি "test" ইম্পোর্ট কমান্ডটি সফলভাবে চালাতে পারলে (কোনো ত্রুটি বা আউটপুট ছাড়া), আপনি গুগল এপিআই-এর সাথে যোগাযোগ শুরু করার জন্য প্রস্তুত!
সারসংক্ষেপ
যেহেতু এটি একটি প্রাথমিক কোডল্যাব, তাই ধরে নেওয়া হচ্ছে যে আপনি গুগল এবং গুগল ওয়ার্কস্পেস এপিআই ব্যবহারে নতুন। যদি আপনার প্রজেক্ট তৈরি করা এবং ব্যবহারকারীর অনুমোদনের জন্য "OAuth ক্লায়েন্ট আইডি" তৈরি করার অভিজ্ঞতা থাকে, তবে একটি বিদ্যমান প্রজেক্ট তৈরি বা পুনরায় ব্যবহার করুন, একটি বিদ্যমান OAuth ক্লায়েন্ট আইডি তৈরি বা পুনরায় ব্যবহার করুন এবং পরবর্তী দুটি মডিউল এড়িয়ে সরাসরি "আপনার ড্রাইভ ফাইল ও ফোল্ডার অ্যাপ্লিকেশন প্রদর্শন" অংশে চলে যান, অথবা কম নির্দেশনাসহ সেই ধাপগুলো পর্যালোচনা করার জন্য একেবারে নিচে "উন্নত ডেভকনসোল ব্যবহার" অংশে চলে যান।
৬. ক্লাউড কনসোলে প্রজেক্ট নির্দিষ্ট করুন
গুগল এপিআই ব্যবহার করে এমন একটি অ্যাপ্লিকেশনের জন্য একটি প্রজেক্ট প্রয়োজন। সেগুলো গুগল ক্লাউড ডেভেলপারস কনসোল বা সংক্ষেপে "ডেভকনসোল"-এ পরিচালিত হয়। এই কোডল্যাবে, আমরা শুধুমাত্র গুগল ড্রাইভ এপিআই ব্যবহার করব, তাই আমাদের একটি ম্যাজিক লিঙ্ক রয়েছে (নিচে ধাপ ১-এ) যা:
- আপনাকে ডেভকনসোলে নিয়ে যায়
- একটি নতুন প্রজেক্ট তৈরি করার (বা বিদ্যমান কোনো প্রজেক্ট বেছে নেওয়ার) প্রক্রিয়াটি আপনাকে ধাপে ধাপে দেখিয়ে দেয়, এবং
- স্বয়ংক্রিয়ভাবে ড্রাইভ এপিআই সক্রিয় করে
চলো করি!
- console.developers.google.com/start/api?id=drive- এ যান এবং আপনার গুগল অ্যাকাউন্টে লগইন করুন।
- আপনার যদি এখনও কোনো প্রজেক্ট না থাকে, তাহলে গুগল এপিআই-এর পরিষেবার শর্তাবলী (Terms of Service) গ্রহণ করার জন্য আপনি এই স্ক্রিনটি দেখতে পাবেন:
একবার আপনি শর্তাবলীতে সম্মত হলে, " আমার প্রজেক্ট " নামে একটি নতুন প্রজেক্ট তৈরি হবে এবং ড্রাইভ এপিআই স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যাবে। ৩. যদি এর পরিবর্তে, আপনি আগে থেকেই একটি প্রজেক্ট তৈরি করে থাকেন (সম্ভবত আপনার আগের কোডল্যাব?), তাহলে আপনি এই স্ক্রিনটি দেখতে পাবেন:
যখন আপনি 'Create a project' পুলডাউনটিতে ক্লিক করবেন, তখন একটি বিদ্যমান প্রজেক্ট বেছে নিন অথবা একটি নতুন প্রজেক্ট তৈরি করুন।
একবার আপনি আপনার নির্বাচন (নতুন বা বিদ্যমান প্রকল্প) করে ফেললে, আপনার জন্য ড্রাইভ এপিআই স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যাবে। ৪. এই নিশ্চিতকরণের মাধ্যমে আপনি জানতে পারবেন যে ড্রাইভ এপিআই সক্রিয় হয়েছে:
৫. পরবর্তী ধাপে যাওয়ার জন্য ‘Go to credentials’-এ ক্লিক করুন।
৭. এপিআই অনুরোধ অনুমোদন করুন (ব্যবহারকারীর অনুমোদন)
আপনি যদি ইতিমধ্যেই ব্যবহারকারী অ্যাকাউন্টের অনুমোদনের তথ্যাবলী তৈরি করে থাকেন এবং প্রক্রিয়াটির সাথে পরিচিত হন, তবে এই অংশটি এড়িয়ে যেতে পারেন। এটি পরিষেবা অ্যাকাউন্টের অনুমোদন থেকে ভিন্ন, যার কৌশল আলাদা, তাই অনুগ্রহ করে নিচে পড়তে থাকুন।
অনুমোদন (এবং কিছু প্রমাণীকরণ) এর ভূমিকা
এপিআই-গুলোতে অনুরোধ পাঠানোর জন্য আপনার অ্যাপ্লিকেশনের যথাযথ অনুমোদন থাকা প্রয়োজন। অথেনটিকেশন , যা একটি অনুরূপ শব্দ, লগইন ক্রেডেনশিয়ালকে বোঝায়—আপনি যখন আপনার গুগল অ্যাকাউন্টে লগইন ও পাসওয়ার্ড দিয়ে লগইন করেন, তখন নিজেকে প্রমাণীকৃত করেন। একবার প্রমাণীকৃত হয়ে গেলে, পরবর্তী ধাপ হলো আপনি—অথবা বলা ভালো, আপনার কোড —ক্লাউড স্টোরেজের ব্লব ফাইল বা গুগল ড্রাইভে থাকা কোনো ব্যবহারকারীর ব্যক্তিগত ফাইলের মতো ডেটা অ্যাক্সেস করার জন্য অনুমোদিত কিনা।
গুগল এপিআই বিভিন্ন ধরণের অনুমোদন সমর্থন করে, কিন্তু গুগল ওয়ার্কস্পেস এপিআই ব্যবহারকারীদের জন্য সবচেয়ে সাধারণ হলো ব্যবহারকারী অনুমোদন , কারণ এই কোডল্যাবের উদাহরণ অ্যাপ্লিকেশনটি শেষ-ব্যবহারকারীদের ডেটা অ্যাক্সেস করে। আপনার অ্যাপকে তাদের ডেটা অ্যাক্সেস করার জন্য সেই শেষ-ব্যবহারকারীদের অবশ্যই অনুমতি দিতে হবে। এর মানে হলো, আপনার কোডকে অবশ্যই ব্যবহারকারী অ্যাকাউন্টের OAuth2 ক্রেডেনশিয়াল সংগ্রহ করতে হবে।
ব্যবহারকারীর অনুমোদনের জন্য OAuth2 ক্রেডেনশিয়াল পেতে, API ম্যানেজারে ফিরে যান এবং বাম-ন্যাভ থেকে "ক্রেডেনশিয়াল" ট্যাবটি নির্বাচন করুন:
সেখানে পৌঁছালে আপনি আপনার সমস্ত পরিচয়পত্র তিনটি আলাদা বিভাগে দেখতে পাবেন:
প্রথমটি এপিআই কী-এর জন্য, দ্বিতীয়টি OAuth 2.0 ক্লায়েন্ট আইডি-র জন্য, এবং শেষটি OAuth2 সার্ভিস অ্যাকাউন্টের জন্য — আমরা মাঝেরটি ব্যবহার করছি।
পরিচয়পত্র তৈরি করা হচ্ছে
ক্রেডেনশিয়ালস পেজ থেকে, উপরে থাকা + Create Credentials বাটনে ক্লিক করুন, যা আপনাকে একটি ডায়ালগ বক্স দেবে যেখানে আপনাকে "OAuth client ID:" বেছে নিতে হবে।
পরবর্তী স্ক্রিনে আপনার জন্য দুটি কাজ রয়েছে: আপনার অ্যাপের অনুমোদন "সম্মতি স্ক্রিন" কনফিগার করা এবং অ্যাপ্লিকেশনের ধরন নির্বাচন করা।
আপনি যদি কোনো সম্মতি স্ক্রিন সেট না করে থাকেন, তাহলে আপনি কনসোলে সতর্কবার্তাটি দেখতে পাবেন এবং আপনাকে এখনই তা করতে হবে। (আপনার সম্মতি স্ক্রিনটি যদি আগে থেকেই সেট করা থাকে, তাহলে পরবর্তী ধাপগুলো এড়িয়ে যান।)
OAuth সম্মতি স্ক্রিন
"কনসেন্ট কনফিগার করুন স্ক্রিন"-এ ক্লিক করুন যেখানে আপনি একটি "এক্সটার্নাল" অ্যাপ নির্বাচন করবেন (অথবা "ইন্টারনাল", যদি আপনি গুগল ওয়ার্কস্পেস [পূর্বে "গুগল ওয়ার্কস্পেস"] গ্রাহক হন):
মনে রাখবেন যে এই অনুশীলনের জন্য আপনি কোনটি বেছে নিচ্ছেন তা গুরুত্বপূর্ণ নয়, কারণ আপনি আপনার কোডল্যাব নমুনা প্রকাশ করছেন না। বেশিরভাগ মানুষ আরও জটিল একটি স্ক্রিনে যাওয়ার জন্য "External" নির্বাচন করবে, কিন্তু আপনাকে আসলে শুধু উপরের "Application name" ফিল্ডটি পূরণ করতে হবে:
এই মুহূর্তে আপনার শুধু একটি অ্যাপ্লিকেশনের নাম প্রয়োজন, তাই এমন একটি নাম বেছে নিন যা আপনার কোডল্যাবের সাথে সামঞ্জস্যপূর্ণ, তারপর সেভ-এ ক্লিক করুন।
OAuth ক্লায়েন্ট আইডি তৈরি করা (ব্যবহারকারীর অ্যাকাউন্ট প্রমাণীকরণ)
এখন একটি OAuth2 ক্লায়েন্ট আইডি তৈরি করতে ক্রেডেনশিয়ালস ট্যাবে ফিরে যান। এখানে আপনি বিভিন্ন ধরণের OAuth ক্লায়েন্ট আইডি দেখতে পাবেন যা আপনি তৈরি করতে পারেন:
আমরা একটি কমান্ড-লাইন টুল তৈরি করছি, যার নাম ‘Other’ , তাই সেটি বেছে নিয়ে ‘ Create’ বোতামে ক্লিক করুন। আপনি যে অ্যাপটি তৈরি করছেন তার সাথে সামঞ্জস্যপূর্ণ একটি ক্লায়েন্ট আইডি নাম বেছে নিন অথবা ডিফল্ট নামটিই ব্যবহার করুন, যা সাধারণত "Other client N " হয়ে থাকে।
আপনার পরিচয়পত্র সংরক্ষণ করা হচ্ছে
- নতুন ক্রেডেনশিয়ালসহ একটি ডায়ালগ বক্স আসবে; এটি বন্ধ করতে OK-তে ক্লিক করুন।
- ক্রেডেনশিয়ালস পেজে ফিরে এসে, নিচে স্ক্রল করে "OAuth2 Client IDs" সেকশনে যান এবং ডাউনলোড আইকনটি খুঁজে ক্লিক করুন।
আপনার নতুন তৈরি করা ক্লায়েন্ট আইডির একেবারে ডানদিকের নিচের অংশে।
- এটি
client_secret-LONG-HASH-STRING.apps.googleusercontent.com.jsonএকটি ফাইল সেভ করার জন্য একটি ডায়ালগ বক্স খুলবে, যা সম্ভবত আপনার ডাউনলোডস ফোল্ডারে থাকবে। আমরা পরামর্শ দিচ্ছি যে, ফাইলটির নাম ছোট করেclient_secret.jsonমতো একটি সহজ নাম দিন (স্যাম্পল অ্যাপটিতে এই নামটিই ব্যবহার করা হয়েছে), এবং তারপর এটিকে সেই ডিরেক্টরি/ফোল্ডারে সেভ করুন যেখানে আপনি এই কোডল্যাবে স্যাম্পল অ্যাপটি তৈরি করবেন।
সারসংক্ষেপ
ক্রেডেনশিয়াল হাতে পেলে আপনি এখন আপনার অ্যাপ থেকে ড্রাইভ এপিআই অ্যাক্সেস করার জন্য প্রস্তুত। তবে মনে রাখবেন, OAuth ক্লায়েন্ট আইডির উদ্দেশ্য হলো, আপনার ব্যবহারকারীদের অবশ্যই গুগল ড্রাইভে থাকা তাদের ডেটা অ্যাক্সেস করার জন্য আপনার অ্যাপকে অনুমতি দিতে হবে।
দ্রষ্টব্য : প্রজেক্ট তৈরি করা, এপিআই (API) সক্রিয় করা এবং ম্যানুয়ালি, অর্থাৎ উপরের 'উইজার্ড' ব্যবহার না করে, ক্রেডেনশিয়াল (credentials) পাওয়ার বিষয়ে আরও বিস্তারিত তথ্য এই কোডল্যাবটি শেষ হওয়ার পর পরবর্তী অধ্যয়নের জন্য উপলব্ধ থাকবে।
৮. আপনার ড্রাইভ ফাইল ও ফোল্ডার অ্যাপ্লিকেশন প্রদর্শন করা
আপনার লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টে হোক বা ক্লাউড শেলে, যে ডিরেক্টরিতে আপনার client_id.json ক্রেডেনশিয়াল ফাইলটি রয়েছে, সেই একই ডিরেক্টরিতে drive_list.py নামে একটি নতুন পাইথন ফাইল তৈরি করুন এবং নিচের কোড লাইনগুলো যোগ করুন:
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
অ্যাপ্লিকেশন কাঠামো
এই অ্যাপ্লিকেশনটিতে তিনটি প্রধান বিভাগ রয়েছে:
- লাইব্রেরির কার্যকারিতা আনার জন্য পাইথন ইম্পোর্ট।
- অ্যাপ্লিকেশন ক্রেডেনশিয়াল প্রাপ্তি
- ব্যবহারকারীর গুগল ড্রাইভ থেকে ফাইল ও ফোল্ডারের নাম এবং MIMEtype সংগ্রহ করে প্রদর্শন করুন।
দ্রষ্টব্য : আরও অধ্যয়নের জন্য এই কোডল্যাবটি শেষ হওয়ার পর কোডের বিস্তারিত বিশ্লেষণ এবং লাইন-বাই-লাইন ব্যাখ্যা পাওয়া যাবে।
অ্যাপ্লিকেশনটি চালানো হচ্ছে
এই ফাইলটির নাম drive_list.py মতো কিছু একটা দিন। আপনি যখন প্রথমবার স্ক্রিপ্টটি চালাবেন, তখন এটির ড্রাইভে থাকা ব্যবহারকারীর (আপনার) ফাইলগুলো অ্যাক্সেস করার অনুমোদন থাকবে না। এক্সিকিউশন পজ করা অবস্থায় আউটপুটটি দেখতে এইরকম হয়:
$ python3 ./drive_list.py /usr/local/lib/python3.6/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory warnings.warn(_MISSING_FILE_MESSAGE.format(filename)) Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?client_id=LONG-STRING.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
স্থানীয় উন্নয়ন পরিবেশ থেকে
একটি ব্রাউজার উইন্ডো খোলার সাথে সাথে কমান্ড-লাইন স্ক্রিপ্টটি থেমে যায় এবং আপনার সামনে OAuth2 অনুমতির ডায়ালগ বক্সটি প্রদর্শিত হয়:

এখানেই অ্যাপ্লিকেশনটি ব্যবহারকারীর কাছে সেই অনুমতিগুলো চায় যা কোডটি অনুরোধ করছে ( SCOPES ভেরিয়েবলের মাধ্যমে)। এক্ষেত্রে, এটি হলো ব্যবহারকারীর গুগল ড্রাইভ থেকে ফাইলের মেটাডেটা দেখার ক্ষমতা। হ্যাঁ, আপনার কোডে এই পারমিশন স্কোপগুলো URI হিসেবে প্রদর্শিত হয়, কিন্তু OAuth2 ফ্লো ডায়ালগ উইন্ডোতে এগুলো আপনার লোকাল দ্বারা নির্দিষ্ট ভাষায় অনূদিত হয়। ব্যবহারকারীকে অবশ্যই অনুরোধ করা অনুমতি(গুলো)র জন্য সুস্পষ্ট অনুমোদন দিতে হবে, অন্যথায় কোডের "রান ফ্লো" অংশটি একটি এক্সেপশন থ্রো করবে এবং স্ক্রিপ্টটি আর অগ্রসর হবে না।
দ্রষ্টব্য : কিছু ব্যবহারকারী একাধিক ব্রাউজার ব্যবহার করেন এবং অনুমোদনের অনুরোধটি আপনার পছন্দের নয় এমন কোনো ব্রাউজারে প্রদর্শিত হতে পারে। যদি এমন হয়, তবে যে ব্রাউজার উইন্ডোটি আপনি ব্যবহার করতে চান না, সেখান থেকে সম্পূর্ণ URL-টি কপি করে আপনার পছন্দের ব্রাউজারের অ্যাড্রেস বারে পেস্ট করুন।
ক্লাউড শেল থেকে
আপনি যদি মনোযোগ না দিয়ে ক্লাউড শেলে প্রোগ্রামটি চালান, তাহলে কোনো ব্রাউজার উইন্ডো খুলবে না, ফলে আপনি আটকে যাবেন। খেয়াল করুন, নিচের ডায়াগনস্টিক বার্তাটি আপনার জন্যই ছিল... এইটি:
If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
এইভাবে চালালে, আপনি এর পরিবর্তে নিম্নলিখিত আউটপুটটি পাবেন:
$ python3 drive_list.py --noauth_local_webserver /usr/local/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory warnings.warn(_MISSING_FILE_MESSAGE.format(filename)) Go to the following link in your browser: https://accounts.google.com/o/oauth2/auth?client_id=xxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code Enter verification code:
নির্দেশনাগুলো অনুসরণ করে এবং সেই URL-টি সহ একটি ভিন্ন ব্রাউজার ট্যাবে গেলে, আপনি স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের জন্য উপরে বর্ণিত অভিজ্ঞতার প্রায় অনুরূপ একটি অভিজ্ঞতা পাবেন। মূল পার্থক্যটি হলো একেবারে শেষে, যেখানে আপনি ক্লাউড শেলে প্রবেশ করানোর জন্য ভেরিফিকেশন কোড সহ আরও একটি স্ক্রিন পাবেন:

এই কোডটি কপি করে টার্মিনাল উইন্ডোতে পেস্ট করুন।
সারসংক্ষেপ
ব্যবহারকারী 'allow'-এ ক্লিক করার পর এবং/অথবা প্রম্পটে ভেরিফিকেশন কোডটি পেস্ট করার পর, অ্যাপটি চলতে থাকবে। ফলে, আউটপুটে ড্রাইভের ফাইল/ফোল্ডার এবং তাদের MIMEtype দেখতে পাওয়ার আশা করতে পারেন। আমাদের একটি টেস্ট অ্যাকাউন্ট থেকে নেওয়া একটি উদাহরণ নিচে দেওয়া হলো:
$ python3 ./drive_list.py Travel expenses application/vnd.google-apps.spreadsheet Gmail Add-ons codelab application/vnd.google-apps.script Google Workspace Developer Intro application/vnd.google-apps.presentation Baseball Sheets application/vnd.google-apps.folder My Resume application/vnd.google-apps.document . . .
পরবর্তী এক্সিকিউশনগুলোতে লক্ষ্য করুন যে আপনাকে আর অথরাইজেশনের জন্য প্রম্পট করা হচ্ছে না (কারণ এটি অথ লাইব্রেরি দ্বারা ক্যাশ করা হয়েছে), এবং আপনি সরাসরি আউটপুটে চলে যাচ্ছেন। প্রথমবারের মতো টার্মিনালে আপনার ডকুমেন্টগুলো দেখতে পাওয়াটা কি রোমাঞ্চকর নয়? আমরাও তাই মনে করি!
৯. উপসংহার
এখন আপনি ড্রাইভ এপিআই (Drive API) সম্পর্কে আরও বৈশিষ্ট্য জানতে অথবা অন্যান্য গুগল ওয়ার্কস্পেস (জিমেইল, গুগল ডক্স, শীটস, স্লাইডস, ক্যালেন্ডার) এবং অন্যান্য গুগল এপিআই (ম্যাপস, অ্যানালিটিক্স, ইউটিউব, ইত্যাদি) অন্বেষণ করতে প্রস্তুত। একেবারে শেষ পর্যন্ত আসার জন্য অভিনন্দন!
এই কোডল্যাবে ব্যবহৃত কোডটি এর গিটহাব রিপোতেও পাওয়া যায়, যার ঠিকানা হলো github.com/googlecodelabs/gsuite-apis-intro । (আমরা এই কোডল্যাবটিকে রিপোর সাথে সিঙ্ক করে রাখার লক্ষ্য রাখি।) এগিয়ে যেতে প্রস্তুত? এই কোডল্যাবে আলোচিত বিষয়বস্তু আরও গভীরভাবে জানতে, অথবা নিজের চিন্তাভাবনার প্রসার ঘটাতে এবং প্রোগ্রামিংয়ের মাধ্যমে গুগল প্রযুক্তি ব্যবহারের অন্যান্য উপায় অন্বেষণ করতে, নিচে বিভিন্ন রিসোর্স দেওয়া হলো যা আপনি ব্যবহার করতে পারেন।
পূর্বেই যেমন ইঙ্গিত দেওয়া হয়েছে, আপনি যদি নিয়মিত পাইথন ডেভেলপার না হন, তবে আমরা আপনাকে আপনার পছন্দের ডেভেলপমেন্ট ল্যাঙ্গুয়েজে এই কোডল্যাব উদাহরণটি পুনরায় করার জন্য আমন্ত্রণ জানাচ্ছি। সমর্থিত ভাষাগুলোর জন্য ক্লায়েন্ট লাইব্রেরিগুলো এখানে পাওয়া যাবে।
অতিরিক্ত অধ্যয়ন
এখন যেহেতু Drive API নিয়ে আপনার কিছুটা অভিজ্ঞতা হয়েছে, আপনার দক্ষতা আরও বাড়ানোর জন্য নিচে কিছু প্রস্তাবিত অনুশীলন দেওয়া হলো:
- জিপ ফাইল : এমন একটি অ্যাপ্লিকেশন লিখুন যা একাধিক জিপ আর্কাইভকে ড্রাইভে ব্যাকআপ করবে এবং চলার পথে সেগুলোকে আনকমপ্রেস করবে, যাতে প্রতিটি জিপ ফাইলের নাম সেই ফোল্ডারের নামের মতোই হয় যেখানে ফাইলগুলো রাখা হবে। অতিরিক্ত যোগ্যতা: অন্য জিপ ফাইলের মধ্যে রিকার্সিভ জিপ আর্কাইভ সমর্থন করুন, যেখানে ড্রাইভ ফোল্ডারগুলো অন্য ফোল্ডারের ভেতরে এমবেড করা থাকবে। যদি আপনি হাল ছেড়ে দেন, তবে এই Node.js স্যাম্পল অ্যাপটি দেখুন।
- ফটো অ্যালবাম : একটি ফটো অ্যালবাম তৈরির টুলের সূচনা লিখুন, যা গুগল ড্রাইভে একাধিক ছবি আপলোড করে সেগুলোকে টাইমস্ট্যাম্প ও জিওলোকেশন অনুযায়ী আলাদা ফোল্ডারে সাজিয়ে রাখবে। অতিরিক্ত টিপস: একটি ওপেন সোর্স ইমেজ ম্যানিপুলেশন লাইব্রেরি খুঁজে বের করুন এবং প্রতিটি ফোল্ডারের সমস্ত ছবি জুড়ে দিয়ে আপনার অভিজ্ঞতার বিভিন্ন ঘটনা (যেমন ভ্রমণ, নৈশভোজ ইত্যাদি) ফুটিয়ে তুলুন।
- জিসিপি অন্বেষণ করুন : এমন একটি অ্যাপ লিখুন যা গুগল ওয়ার্কস্পেস এবং গুগল ক্লাউড প্ল্যাটফর্ম (জিসিপি)-কে একসাথে সংযুক্ত করে। এমন একটি টুল তৈরি করুন যা গুগল ড্রাইভ থেকে ইমেজ ফাইলগুলোকে গুগল ক্লাউড স্টোরেজ (জিসিএস)-এ ব্যাকআপ করে, যা ক্লাউডে ফাইল সংরক্ষণের আরেকটি সমাধান। বিশ্বাস করুন বা না করুন, এর উন্নত ক্লায়েন্ট লাইব্রেরিগুলোর কারণে জিসিএস ব্যবহার করা ড্রাইভের চেয়ে সহজ হবে।
- বিশ্লেষণ ও নথিভুক্ত করুন : #৩-এর সমাধানটিকে আরও প্রসারিত করুন। এর জন্য, ব্যাকআপ করা প্রতিটি ছবিকে গুগল ক্লাউড ভিশন এপিআই-তে পাঠিয়ে বিশ্লেষণ করুন এবং এপিআই সেই ছবিগুলোতে যা দেখতে পায়, তার শীর্ষ ৩, ৫, ১০টি "লেবেল" সংগ্রহ করুন। প্রতিটি ছবির জন্য, একটি গুগল শিটে একটি সারি লিখুন, যেখানে ক্লাউড ভিশন থেকে প্রাপ্ত বিশ্লেষণ এবং জিসিএস-এ সেটির ব্যাকআপ করা অবস্থান উল্লেখ থাকবে। যদি আপনি হাল ছেড়ে দেন, তবে এই পাইথন কোডল্যাবটি দেখুন।
১০. অতিরিক্ত সম্পদ
ডকুমেন্টেশন
- গুগল ড্রাইভ এপিআই ডকুমেন্টেশন (REST API এবং অ্যান্ড্রয়েড নেটিভ SDK/API)
- অন্যান্য গুগল ওয়ার্কস্পেস এপিআই ডকুমেন্টেশন
- অন্যান্য গুগল এপিআই ডকুমেন্টেশন
- গুগল এপিআই ক্লায়েন্ট লাইব্রেরি
- OAuth2 ডকুমেন্টেশন
সম্পর্কিত এবং সাধারণ ভিডিও
- নতুন গুগল এপিআই প্রজেক্ট তৈরি করা ( ব্লগ পোস্ট ও ভিডিও )
- পাইথন অথরাইজেশন বয়লারপ্লেট কোড রিভিউ ( ভিডিও )
- গুগল ড্রাইভে আপনার ফাইল তালিকাভুক্ত করা ( ভিডিও , ব্লগ পোস্ট )
- গুগল ড্রাইভ এপিআই ভিডিও লাইব্রেরি
- লঞ্চপ্যাড অনলাইন ভিডিও সিরিজ (এর পূর্বসূরি...)
- গুগল ওয়ার্কস্পেস ডেভ শো ভিডিও সিরিজ
সংবাদ ও আপডেট
- গুগল ওয়ার্কস্পেস ডেভেলপারদের ব্লগ
- গুগল ওয়ার্কস্পেস ডেভেলপারদের টুইটার (@GSuiteDevs)
- গুগল ওয়ার্কস্পেস ডেভেলপারদের মাসিক নিউজলেটার
অন্যান্য কোডল্যাব
ভূমিকা
- [অ্যাপস স্ক্রিপ্ট] গুগল অ্যাপস স্ক্রিপ্ট পরিচিতি
মধ্যবর্তী
- [অ্যাপস স্ক্রিপ্ট] CLASP অ্যাপস স্ক্রিপ্ট কমান্ড-লাইন টুল
- [অ্যাপস স্ক্রিপ্ট] জিমেইল অ্যাড-অন
- [অ্যাপস স্ক্রিপ্ট] ডকস অ্যাড-অন এবং জিসিপি ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই
- [অ্যাপস স্ক্রিপ্ট] হ্যাংআউটস চ্যাট বট ফ্রেমওয়ার্ক
- [REST API] কাস্টম রিপোর্টিং টুল (শিটস এপিআই)
- [REST API] গিটহাব লাইসেন্সের জন্য কাস্টম স্লাইড জেনারেটর বিগকোয়েরি অ্যানালাইজার (স্লাইডস+বিগকোয়েরি এপিআই)
উন্নত
- [REST API] ক্লাউড ইমেজ প্রসেসিং ওয়ার্কফ্লো (ড্রাইভ, ক্লাউড স্টোরেজ, ক্লাউড ভিশন, শীটস এপিআই)
রেফারেন্স অ্যাপস
- মার্কডাউন থেকে গুগল স্লাইড রূপান্তরকারী (স্লাইড REST API)
১১. *আবেদনের বিস্তারিত ব্যাখ্যা
এই ঐচ্ছিক অংশটি সেশন শেষ হওয়ার পর স্ব-অধ্যয়নের জন্য, উদ্ভূত কোনো ঘাটতি পূরণের উদ্দেশ্যে অথবা আরও গবেষণার জন্য ব্যবহার করতে হবে।
লাইব্রেরির কার্যকারিতা আনার জন্য পাইথন ইম্পোর্ট।
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
- প্রথম
importস্টেটমেন্টটি এই কোডটিকে পাইথন ২-এ চালানোর উপযোগী করে তোলে—যদি আপনি শুধুমাত্র পাইথন ৩ ব্যবহার করেন, তবে এটি সম্পূর্ণ বাদ দেওয়া যেতে পারে। - পাইথনের একটি স্টাইল গাইডলাইন হলো স্ট্যান্ডার্ড লাইব্রেরি এবং থার্ড-পার্টি মডিউল ইম্পোর্ট আলাদা রাখা—ফাঁকা লাইনটি সেই উদ্দেশ্যেই ব্যবহৃত হয়।
- পরবর্তী তিনটি ইম্পোর্ট গুগল এপিআই ক্লায়েন্ট লাইব্রেরি থেকে প্রয়োজনীয় ক্লাস ও ফাংশনগুলো নিয়ে আসে... এই অ্যাপটি লেখার জন্য এগুলোর সবই প্রয়োজন। সংক্ষেপে, এগুলোর কাজ নিচে দেওয়া হলো:
-
googleapiclientগুগল এপিআই-এর সাথে সংযোগ স্থাপনের উপর মনোযোগ দেয়। -
httplib2অ্যাপটি ব্যবহারের জন্য একটি HTTP ক্লায়েন্ট প্রদান করে। -
oauth2clientআমাদের OAuth2 ক্রেডেনশিয়াল পরিচালনা করতে সাহায্য করে।
অনুমোদন এবং আবেদনপত্র প্রাপ্তির প্রমাণপত্র
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
- অ্যাপ্লিকেশন
SCOPESহলো সেই অনুমতিগুলো যা একটি অ্যাপ এটি চালনাকারী ব্যবহারকারীর কাছে চাইবে। ব্যবহারকারীর ডেটা সুরক্ষিত রাখতে, অনুমতি না পেলে অ্যাপগুলো চলতে পারে না। - একটি উত্তম অনুশীলন হলো আপনার অ্যাপটি সঠিকভাবে কাজ করার জন্য প্রয়োজনীয় সবচেয়ে সীমিত অনুমতিগুলো ব্যবহার করা। কেন?
- কোনো অ্যাপ ইনস্টল বা রান করার সময় যখন অনেকগুলো পারমিশন চায়, তখন কি তা বিরক্তিকর লাগে না? জানেন কি? এখন আপনিই মুদ্রার অন্য পিঠে আছেন, আপনার ব্যবহারকারীদের কাছে এই সমস্ত পারমিশন চাইছেন। আরও সীমাবদ্ধ স্কোপ ব্যবহার করলে ব্যবহারকারীরা আপনার অ্যাপ ইনস্টল করতে স্বাচ্ছন্দ্য বোধ করেন, কারণ আপনি কম অ্যাক্সেস চাইছেন।
- প্রায় সব স্কোপই দীর্ঘ ইউআরএল-এর মতো দেখতে হয়, এবং ড্রাইভ মেটাডেটা স্কোপও এর ব্যতিক্রম নয়।
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
- অ্যাপগুলোকে গুগল সার্ভারের সাথে যোগাযোগ করার জন্য একটি টোকেন প্রয়োজন। গুগল থেকে প্রাপ্ত বৈধ টোকেনগুলো টোকেন স্টোরেজ ফাইল,
storage.jsonএ সংরক্ষিত হবে। আপনি যদি এই টোকেনগুলো সংরক্ষণ না করেন, তবে প্রতিবার অ্যাপটি চালানোর সময় আপনাকে এটি পুনরায় অনুমোদন করতে হবে।
store = file.Storage('storage.json')
- এই অ্যাপটি প্রথমে যাচাই করে দেখে যে স্টোরেজে আমাদের বৈধ ক্রেডেনশিয়াল আগে থেকেই আছে কিনা (
ifস্টেটমেন্ট কন্ডিশনালটি দেখুন)।
creds = store.get()
if not creds or creds.invalid:
- আপনার ক্রেডেনশিয়াল না থাকলে বা মেয়াদোত্তীর্ণ হয়ে গেলে, আপনার ডাউনলোড করা
client_id.jsonফাইলে থাকা OAuth ক্লায়েন্ট আইডি ও সিক্রেট ব্যবহার করে [oauth2client.client.flow_from_clientsecrets()ফাংশনের মাধ্যমে] একটি নতুন অথরাইজেশন ফ্লো তৈরি করতে হবে।
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- আপনার অ্যাপে একবার একটি ফ্লো তৈরি হয়ে গেলে, উপরে বর্ণিত ও চিত্রিত পদ্ধতি অনুযায়ী [
oauth2client.tools.run_flow()এর মাধ্যমে] ব্যবহারকারীর কাছে OAuth2 অনুমতির স্ক্রিনটি উপস্থাপন করার জন্য সেটিকে অবশ্যই এক্সিকিউট করতে হবে।
creds = tools.run_flow(flow, store)
- 'Allow'- এ ক্লিক করার মাধ্যমে, ব্যবহারকারীরা আপনার অ্যাপকে তাদের গুগল ড্রাইভ ফাইলের মেটাডেটা অ্যাক্সেস করার অনুমতি দেন এবং গুগল সার্ভারগুলো এপিআই (API) অ্যাক্সেস করার জন্য টোকেন ফেরত পাঠায়। এই টোকেনগুলো
credsহিসেবে ফেরত আসে এবংstorage.jsonফাইলে ক্যাশ করা থাকে। - এই পর্যায়ে, আপনার অ্যাপের কাছে এখন এপিআই কল করার জন্য বৈধ ক্রেডেনশিয়াল রয়েছে।
googleapiclient.discovery.build()কল করলে আপনার ব্যবহৃত এপিআই-এর জন্য একটি সার্ভিস এন্ডপয়েন্ট তৈরি হয়। -
build()ব্যবহার করতে, API-এর নাম ('drive') এবং কাঙ্ক্ষিত সংস্করণ (বর্তমানে'v3') প্রদান করুন। - শেষ প্যারামিটারটি হলো একটি HTTP ক্লায়েন্ট, যা এনক্রিপ্টেড এপিআই কলের জন্য ব্যবহৃত হবে।
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
ড্রাইভের প্রথম ১০০টি ফাইল/ফোল্ডার ও MIMEtype খুঁজে বের করে প্রদর্শন করুন
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- কোডের পরবর্তী লাইনটি ড্রাইভ এপিআই-এর জন্য রিকোয়েস্ট তৈরি করতে
files()কালেকশনেরlist()মেথডকে কল করে, যা সাথে সাথেইexecute()দিয়ে কল করা হয়। এর ফলে একটি পাইথনdictরিটার্ন হয়, যেখান থেকে আমরা ব্যবহারকারীর গুগল ড্রাইভ থেকে ১০০টি ফাইল ও ফোল্ডারের নাম পাওয়ার জন্য'files'কী-টি চাই (অথবা ফাইলের সংখ্যা কম হলে তার চেয়েও কম)। - ১০০ কেন?
DRIVE.files().list()থেকে এটাই ডিফল্ট মান। আপনি যদি এই সংখ্যাটি পরিবর্তন করতে চান, যেমন মাত্র ১০টি ফাইল বা ১০০০টি, তাহলে আপনার রিকোয়েস্টেpageSizeপ্যারামিটারটি যোগ করুন:DRIVE.files().list(pageSize=10)। আরও অপশনের জন্য ডকুমেন্টেশন দেখুন। - স্ক্রিপ্টের শেষ অংশটি প্রতিটি ফাইলের মধ্য দিয়ে লুপ করে তাদের নাম ও ফাইলের MIMEtype প্রদর্শন করে।
আপনি এইমাত্র আপনার প্রথম অ্যাপ্লিকেশনটি লিখেছেন যা একটি গুগল REST API ব্যবহার করে... অভিনন্দন! ইম্পোর্ট এবং অথরাইজেশন কোড বাদ দিলে, এই স্ক্রিপ্টটি আসলে মাত্র কয়েক লাইনের কোড (যা আপনি উপরে দেখছেন)। বেশিরভাগ গুগল API একই রকমভাবে কাজ করে এবং আপনি যেগুলি ব্যবহার করতে চান, সেগুলির প্রতিটির জন্য কেবল সার্ভিস এন্ডপয়েন্ট তৈরি করতে হবে।
একটি অ্যাপে একাধিক গুগল এপিআই ব্যবহার করা
হ্যাঁ, আপনি অবশ্যই একই অ্যাপে একাধিক API ব্যবহার করতে পারেন! এখানে এমন একটি অ্যাপের পাইথন কোড স্নিপেট দেওয়া হলো, যেটি একই HTTP ক্লায়েন্ট পুনরায় ব্যবহার করে এবং তিনটি গুগল API-এর জন্য সার্ভিস এন্ডপয়েন্ট তৈরি করে (হ্যাঁ, ৩টি ভিন্ন SCOPES সহ):
SCOPES = (
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets.readonly',
'https://www.googleapis.com/auth/presentations',
)
. . .
HTTP = creds.authorize(Http())
DRIVE = discovery.build('drive', 'v3', http=HTTP)
SHEETS = discovery.build('sheets', 'v4', http=HTTP)
SLIDES = discovery.build('slides', 'v1', http=HTTP)
আমরা কল্পনা করি যে এই কোডটি এমন একটি অ্যাপের অংশ হতে পারে যা স্প্রেডশীট ডেটার (শীটস এপিআই) উপর ভিত্তি করে একাধিক স্লাইড ডেক (স্লাইডস এপিআই) তৈরি করে এবং প্রতিটি তৈরি হওয়া ডেকের জন্য একটি স্লাইড টেমপ্লেট (ড্রাইভ এপিআই) কপি করে। যদিও এমন কোনো অ্যাপ নেই, গুগল ওয়ার্কস্পেস টিমের তৈরি করা দুটি বিদ্যমান নমুনাকে ভিত্তি হিসেবে ব্যবহার করে আপনি এর অনুরূপ কিছু তৈরি করতে পারবেন।
- স্লাইডে ( ব্লগ পোস্ট ও ভিডিও ) টেক্সট ও ছবি প্রতিস্থাপন — এর জন্য প্রথমে Drive API ব্যবহার করে একটি স্লাইড টেমপ্লেট ডেক কপি করা হয় এবং তারপর Slides API প্রয়োগ করে টেক্সট ও ছবির প্লেসহোল্ডারগুলো পরিবর্তন করা হয়।
- স্প্রেডশিট ডেটা থেকে স্লাইড তৈরি করা ( ব্লগ পোস্ট ও ভিডিও ) — একটি স্প্রেডশিট থেকে ডেটা পড়ে (শিটস এপিআই) এবং সেই ডেটার উপর ভিত্তি করে স্লাইড তৈরি করে (স্লাইডস এপিআই)।
আপনার চ্যালেঞ্জ: অ্যাপটি তৈরি করুন!
১২. *ডেভকনসোলের উন্নত ব্যবহার*
এই ঐচ্ছিক অংশে, আমরা বর্ণনা করব কীভাবে কোডল্যাবের মতো উইজার্ড ব্যবহার না করেই ডেভকনসোলে প্রজেক্ট তৈরি করতে, এপিআই (API) সক্রিয় করতে এবং ক্রেডেনশিয়াল (credentials) পেতে হয়। এটি সেইসব মধ্যবর্তী স্তরের ব্যবহারকারীদের জন্য, যারা এই কাজটি ম্যানুয়ালি করতে যথেষ্ট স্বচ্ছন্দ অথবা তা শিখতে চান।
ক্লাউড কনসোলে প্রজেক্ট নির্দিষ্ট করুন
যখনই আপনি গুগল এপিআই (Google APIs) ব্যবহার করে কোনো অ্যাপ্লিকেশন তৈরি করবেন, আপনার একটি প্রজেক্ট থাকা প্রয়োজন। আপনি একটি বিদ্যমান প্রজেক্ট পুনরায় ব্যবহার করতে পারেন অথবা একটি নতুন প্রজেক্ট তৈরি করতে পারেন। এই কাজটি ক্লাউড কনসোলে (Cloud Console) করা হয়। কিছু কোডল্যাব একটি ম্যাজিক লিঙ্ক (অর্থাৎ, একটি সেটআপ উইজার্ডের মতো) প্রদান করে, যা আপনাকে প্রয়োজনীয় অনেক ধাপ এড়িয়ে দ্রুত কাজ শুরু করতে সাহায্য করে। কিন্তু সব কোডল্যাবে এটি থাকে না, তাই এখানে প্রজেক্ট তৈরির সাধারণ নির্দেশাবলী দেওয়া হলো।
আপনি ক্লাউড কনসোলের বেশিরভাগ স্ক্রিন থেকেই প্রজেক্ট তৈরি করতে পারবেন, যদি আপনি আপনার গুগল ক্রেডেনশিয়াল দিয়ে লগ ইন করে থাকেন এবং কনসোলের উপরে একটি প্রজেক্ট পুলডাউন দেখতে পান। উল্লেখ্য যে, এখানকার বেশিরভাগ স্ক্রিনশট এপিআই ম্যানেজার বা ডেভেলপারস কনসোল থেকে নেওয়া হয়েছে (বাম দিকের নেভিগেশনে "এপিআই ম্যানেজার"-এ ক্লিক করে অথবা সরাসরি আপনার ব্রাউজার থেকে console.developers.google.com- এ গিয়ে এটিতে সহজেই পৌঁছানো যায়)।
- আপনার যদি এখনও কোনো প্রজেক্ট না থাকে, তাহলে আপনাকে নিয়ে যাওয়া হতে পারে...
- ড্যাশবোর্ড পৃষ্ঠা:
- লাইব্রেরি পৃষ্ঠা:
- অথবা একটি সম্পূর্ণ খালি পৃষ্ঠা:
আপনার সাথে যদি এই তৃতীয়টি ঘটে, তবে লাইব্রেরি পৃষ্ঠায় যাওয়ার জন্য শুধু ব্রাউজারটি রিফ্রেশ করুন।
- Whether you're on the Dashboard or Library pages, click the project selector at the top of the page:
- Next, you'll get the selector dialog. Click on the "+" on the right-hand side to create a new project:
- After you click the "+", a New Project page will appear. All consumer accounts get 12 projects by default. Before creating your first project, you'll have to accept the Google APIs Terms of Service :
After you've done this, the email solicitation and Terms of Service questions go away when creating future projects:
5. If you've created at least one project in the past, after login, you'll be taken to the dashboard of the last project you worked on. From there, create a new project as you would be choosing Select a project > + . 6. Once your new project has been created, you'll be back on the Dashboard page:
You've now created a project successfully and are ready to move on by choosing the APIs you wish to use for your project.
Enable Google APIs
Before you can begin using Google APIs, you must enable them. The example below shows what you would do to enable the Cloud Vision API. In this codelab, you may be using one or more APIs, and should follow similar steps to enable them before usage.
ক্লাউড শেল থেকে
Using Cloud Shell, you can enable the API by using the following command:
gcloud services enable vision.googleapis.com
ক্লাউড কনসোল থেকে
You may also enable the Vision API in the API Manager. From the Cloud Console, go to API Manager and select, "Library."
In the search bar, start typing, "vision," then select Vision API when it appears. It may look something like this as you're typing:
Select the Cloud Vision API to get the dialog you see below, then click the "Enable" button:
খরচ
While many Google APIs can be used without fees, use of GCP (products & APIs) is not free. When enabling the Vision API (as described above), you may be asked for an active billing account. The Vision API's pricing information should be referenced by the user before enabling. Keep in mind that certain Google Cloud Platform (GCP) products feature an "Always Free" tier for which you have to exceed in order to incur billing. For the purposes of the codelab, each call to the Vision API counts against that free tier, and so long as you stay within its limits in aggregate (within each month), you should not incur any charges.
Some Google APIs, ie, Google Workspace, has usage covered by a monthly subscription, so there's no direct billing for use of the Gmail, Google Drive, Calendar, Docs, Sheets, and Slides APIs, for example. Different Google products are billed differently, so be sure to reference your API's documentation for that information.
সারসংক্ষেপ
In this codelab, you only need to turn on the Google Drive API, so follow the instructions above and search for "Drive". Proceed forward once it's enabled.
Authorize API requests (user authorization)
Intro to authorization (plus some authentication)
In order to make requests to the APIs, your application needs to have the proper authorization . Authentication , a similar word, describes login credentials—you authenticate yourself when logging into your Google account with a login & password. Once authenticated, the next step is whether you are—or rather, your code , is— authorized to access data, such as blob files on Cloud Storage or a user's personal files on Google Drive.
Google APIs support several types of authorization, but the one most common for Google Workspace API users is user authorization since the example application in this codelab accesses data belonging to end-users. Those end-users must grant permission for your app to access their data . This means your code must obtain user account OAuth2 credentials.
To get OAuth2 credentials for user authorization, go back to the API manager and select the "Credentials" tab on the left-nav:
When you get there, you'll see all your credentials in three separate sections:
The first is for API keys , the second OAuth 2.0 client IDs, and the last OAuth2 service accts —we're using the one in the middle.
Creating credentials
From the Credentials page, click on the + Create Credentials button at the top, which then gives you a dialog where you'd choose "OAuth client ID:"
On the next screen, you have 2 actions: configuring your app's authorization "consent screen" and choosing the application type:
If you have not set a consent screen, you will see the warning in the console and would need to do so now. (Skip this these next steps if your consent screen has already been setup.)
OAuth consent screen
Click on "Configure consent screen" where you select an "External" app (or "Internal" if you're a Google Workspace customer):
Note that for the purposes of this exercise, it doesn't matter which you pick because you're not publishing your codelab sample. Most people will select "External" to be taken to a more complex screen, but you really only need to complete the "Application name" field at the top:
The only thing you need at this time is just an application name so pick someone that reflects the codelab you're doing then click Save .
Creating OAuth client ID (user acct auth)
Now go back to the Credentials tab to create an OAuth2 client ID . Here you'll see a variety of OAuth client IDs you can create:
We're developing a command-line tool, which is Other , so choose that then click the Create button. Choose a client ID name reflecting the app you're creating or simply take the default name, which is usually, "Other client N ".
Saving your credentials
- A dialog with the new credentials appears; click OK to close
- Back on the Credentials page, scroll down to the "OAuth2 Client IDs" section find and click the download icon
to the far right bottom of your newly-created client ID.
- This open a dialog to save a file named
client_secret-LONG-HASH-STRING.apps.googleusercontent.com.json, likely to your Downloads folder. We recommend shortening to an easier name likeclient_secret.json(which is what the sample app uses), then save it to the directory/folder where you'll be creating the sample app in this codelab.