বিকাশকারীর গাইড: জাভাস্ক্রিপ্ট

ব্লগার ডেটা API ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে Google ডেটা API ফিডের আকারে ব্লগার সামগ্রী দেখতে এবং আপডেট করার অনুমতি দেয়৷

আপনার ক্লায়েন্ট অ্যাপ্লিকেশন নতুন ব্লগ পোস্ট তৈরি করতে, বিদ্যমান ব্লগ পোস্টগুলি সম্পাদনা করতে বা মুছে ফেলতে এবং নির্দিষ্ট মানদণ্ডের সাথে মেলে এমন ব্লগ পোস্টগুলির জন্য অনুসন্ধান করতে Blogger Data API ব্যবহার করতে পারে৷

ব্লগার ডেটা এপিআই এর ক্ষমতার উপর কিছু পটভূমি প্রদান করার পাশাপাশি, এই নথিটি জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরি ব্যবহার করে মৌলিক ডেটা API ইন্টারঅ্যাকশনের উদাহরণ প্রদান করে। আপনি যদি লাইব্রেরি ব্যবহার করে এমন অন্তর্নিহিত প্রোটোকল সম্পর্কে আরও বুঝতে আগ্রহী হন তবে এই বিকাশকারীর গাইডের প্রোটোকল বিভাগটি দেখুন।

বিষয়বস্তু

শ্রোতা

এই নথিটি এমন প্রোগ্রামারদের জন্য যারা জাভাস্ক্রিপ্ট ক্লায়েন্ট অ্যাপ্লিকেশন লিখতে চান যা ব্লগারের সাথে যোগাযোগ করতে পারে। এটি জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরি ব্যবহার করে মৌলিক ডেটা API ইন্টারঅ্যাকশনের উদাহরণগুলির একটি সিরিজ প্রদান করে।

ব্লগার ডেটা API রেফারেন্স তথ্যের জন্য, প্রোটোকল রেফারেন্স গাইড দেখুন। এই নথিটি অনুমান করে যে আপনি Google Data APIs প্রোটোকল এবং JavaScript ক্লায়েন্ট লাইব্রেরি দ্বারা ব্যবহৃত ডেটা মডেল এবং নিয়ন্ত্রণ প্রবাহের পিছনের সাধারণ ধারণাগুলি বোঝেন৷ এটি অনুমান করে যে আপনি জাভাস্ক্রিপ্টে কীভাবে প্রোগ্রাম করতে হয় তা জানেন।

ক্লায়েন্ট লাইব্রেরি দ্বারা প্রদত্ত ক্লাস এবং পদ্ধতি সম্পর্কে তথ্যের জন্য, JavaScript ক্লায়েন্ট লাইব্রেরি API রেফারেন্স দেখুন।

এই নথিটি ক্রমানুসারে পড়ার জন্য ডিজাইন করা হয়েছে; প্রতিটি উদাহরণ আগের উদাহরণের উপর তৈরি করে।

ব্যবহারের শর্তাবলী

আপনি JavaScript ক্লায়েন্ট লাইব্রেরি ব্যবহার করার সময় Google JavaScript ক্লায়েন্ট লাইব্রেরির ব্যবহারের শর্তাবলী মেনে চলতে সম্মত হন।

সমর্থিত পরিবেশ সম্পর্কে

বর্তমানে, আমরা শুধুমাত্র জাভাস্ক্রিপ্ট ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে সমর্থন করি যেগুলি ব্রাউজারে একটি ওয়েব পৃষ্ঠায় চলে৷ বর্তমানে সমর্থিত ব্রাউজারগুলি হল Firefox 1.5 এবং উচ্চতর, এবং Internet Explorer 6.0 এবং উচ্চতর।

জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরি পরিষেবার সার্ভারের সাথে সমস্ত যোগাযোগ পরিচালনা করে। আপনি যদি একজন অভিজ্ঞ JS ডেভেলপার হন, তাহলে আপনি হয়তো ভাবছেন, "কিন্তু একই মূল নীতির কী হবে?" JavaScript ক্লায়েন্ট লাইব্রেরি আপনার ক্লায়েন্টকে ব্রাউজার নিরাপত্তা মডেলের সাথে সঙ্গতিপূর্ণ থাকাকালীন যেকোনো ডোমেন থেকে Google Data API অনুরোধ পাঠাতে দেয়।

শুরু হচ্ছে

আপনি একটি জাভাস্ক্রিপ্ট ক্লায়েন্ট অ্যাপ্লিকেশন লিখতে পারার আগে, আপনাকে লাইব্রেরি অর্জন করতে কিছু সেটআপ করতে হবে।

একটি ব্লগার অ্যাকাউন্ট তৈরি করা

আপনি পরীক্ষার উদ্দেশ্যে একটি ব্লগার অ্যাকাউন্টের জন্য সাইন আপ করতে চাইতে পারেন। ব্লগার Google অ্যাকাউন্ট ব্যবহার করে, তাই আপনার যদি ইতিমধ্যেই একটি Google অ্যাকাউন্ট থাকে, তাহলে আপনি প্রস্তুত।

লাইব্রেরি অধিগ্রহণ

আপনার ক্লায়েন্ট ক্লায়েন্ট লাইব্রেরি ব্যবহার করার আগে, ক্লায়েন্টকে সার্ভার থেকে ক্লায়েন্ট লাইব্রেরি কোড অনুরোধ করতে হবে।

Google AJAX API লোডার আনতে আপনার HTML নথির <head> বিভাগে একটি <script> ট্যাগ ব্যবহার করে শুরু করুন:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

লোডার আনার পরে Google Data API ক্লায়েন্ট লাইব্রেরি অর্জন করতে, আপনার JavaScript সেটআপ কোডে নিম্নলিখিত লাইনটি ব্যবহার করুন, যেটিকে আপনার HTML নথির <head> বিভাগ থেকে কল করতে হবে (অথবা <script> ব্যবহার করে অন্তর্ভুক্ত একটি JavaScript ফাইল থেকে আপনার HTML নথির <head> বিভাগে ট্যাগ করুন:

google.load("gdata", "1.x");

google.load() এর দ্বিতীয় প্যারামিটার হল জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরির অনুরোধকৃত সংস্করণ নম্বর। আমাদের সংস্করণ নম্বরিং স্কিমটি Google Maps API দ্বারা ব্যবহৃত একটির অনুকরণে তৈরি করা হয়েছে৷ এখানে সম্ভাব্য সংস্করণ সংখ্যা এবং তাদের অর্থ কী:

"1"
প্রধান সংস্করণ 1 এর দ্বিতীয় থেকে শেষ সংশোধন।
"1.x"
প্রধান সংস্করণ 1 এর একেবারে সর্বশেষ সংশোধন।
"1.s"
প্রধান সংস্করণ 1 এর সর্বশেষ স্থিতিশীল সংশোধন। আমরা মাঝে মাঝে ক্লায়েন্ট লাইব্রেরির একটি নির্দিষ্ট সংস্করণকে ডেভেলপারদের কাছ থেকে প্রাপ্ত প্রতিক্রিয়ার ভিত্তিতে "স্থিতিশীল" হিসাবে ঘোষণা করব। যাইহোক, সেই সংস্করণে সর্বশেষ বৈশিষ্ট্য নাও থাকতে পারে।
"1.0" , "1.1 ", ইত্যাদি
লাইব্রেরির একটি নির্দিষ্ট সংস্করণ, একটি নির্দিষ্ট প্রধান এবং ছোট সংশোধন নম্বর সহ।

আপনি google.load() করার পরে, আপনাকে লোডারকে পৃষ্ঠাটি লোড হওয়া পর্যন্ত অপেক্ষা করতে বলতে হবে এবং তারপরে আপনার কোডটি কল করতে হবে:

google.setOnLoadCallback(getMyBlogFeed);

যেখানে getMyBlogFeed() একটি ফাংশন যা আমরা এই নথির পরবর্তী বিভাগে সংজ্ঞায়িত করব। <body> উপাদানের সাথে একটি onload হ্যান্ডলার সংযুক্ত করার পরিবর্তে এই পদ্ধতিটি ব্যবহার করুন।

ব্লগার পরিষেবাতে প্রমাণীকরণ করা হচ্ছে

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

JavaScript ক্লায়েন্ট লাইব্রেরি AuthSub প্রমাণীকরণ সিস্টেম ব্যবহার করে। সাধারণভাবে Google Data API-এর সাথে প্রমাণীকরণ সম্পর্কে আরও তথ্যের জন্য, প্রমাণীকরণ ডকুমেন্টেশন দেখুন।

AuthSub প্রক্সি প্রমাণীকরণ

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

একটি ওয়েব-ভিত্তিক জাভাস্ক্রিপ্ট ক্লায়েন্টের জন্য প্রমাণীকরণ প্রক্রিয়া চলাকালীন কী ঘটে তার একটি সংক্ষিপ্ত বিবরণ এখানে রয়েছে:

  1. ক্লায়েন্ট অ্যাপ্লিকেশনটি ক্লায়েন্ট লাইব্রেরি দ্বারা প্রদত্ত google.accounts.user.login() পদ্ধতিটিকে কল করে, এটিকে একটি "স্কোপ" মান পাস করে যা নির্দেশ করে যে কোন Google পরিষেবাটি ব্যবহার করতে হবে৷ ব্লগারের জন্য, সুযোগ হল "http://www.blogger.com/feeds/"
  2. ক্লায়েন্ট লাইব্রেরি ব্রাউজারটিকে Google এর "অ্যাক্সেস অনুরোধ" পৃষ্ঠায় পাঠায়, যেখানে ব্যবহারকারী পরিষেবাতে লগ ইন করতে তাদের শংসাপত্রগুলি প্রবেশ করতে পারে৷
  3. যদি ব্যবহারকারী সফলভাবে লগ ইন করে, তাহলে AuthSub সিস্টেম ব্রাউজারটিকে ওয়েব ক্লায়েন্টের URL-এ পাঠায়, প্রমাণীকরণ টোকেন বরাবর পাস করে।
  4. জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরি একটি কুকিতে টোকেন সংরক্ষণ করে এবং ক্লায়েন্ট অ্যাপ্লিকেশনের ফাংশনে নিয়ন্ত্রণ ফিরিয়ে দেয় যাকে google.accounts.user.login() বলা হয়।
  5. যখন ক্লায়েন্ট অ্যাপ্লিকেশন পরবর্তীতে ক্লায়েন্ট লাইব্রেরি পদ্ধতিগুলিকে কল করে যা ব্লগারের সাথে ইন্টারঅ্যাক্ট করে, ক্লায়েন্ট লাইব্রেরি স্বয়ংক্রিয়ভাবে সমস্ত অনুরোধে টোকেন সংযুক্ত করে।

দ্রষ্টব্য : জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরির জন্য একটি ওয়েব ব্রাউজারে প্রমাণীকৃত ব্লগার অনুরোধ করার জন্য, আপনার পৃষ্ঠায় অবশ্যই এমন একটি চিত্র থাকতে হবে যা আপনার পৃষ্ঠার মতো একই ডোমেনে হোস্ট করা হয়েছে৷ এটি যেকোন ইমেজ হতে পারে, এমনকি একটি একক-পিক্সেল স্বচ্ছ ইমেজও হতে পারে, তবে পৃষ্ঠায় একটি ছবি থাকতে হবে। আপনি যদি চান যে ছবিটি আপনার পৃষ্ঠায় উপস্থিত না হোক, আপনি চিত্রটিকে রেন্ডারিং এলাকার বাইরে অবস্থান করতে <img> ট্যাগের style অ্যাট্রিবিউট ব্যবহার করতে পারেন। যেমন: style="position:absolute; top: -1000px;"

এখানে ক্লায়েন্ট-অ্যাপ্লিকেশন কোড যা লগ ইন পরিচালনা করে। আমরা পরে অন্য কোড থেকে setupMyService() ফাংশনকে কল করব।

function logMeIn() {
  scope = "http://www.blogger.com/feeds/";
  var token = google.accounts.user.login(scope);
}

function setupMyService() {
  var myService =
    new google.gdata.blogger.BloggerService('exampleCo-exampleApp-1');
  logMeIn();
  return myService;
}

টিপ : আমরা দৃঢ়ভাবে সুপারিশ করি যে আপনি একটি লগইন বোতাম বা অন্য ব্যবহারকারীর ইনপুট প্রক্রিয়া প্রদান করুন যাতে ব্যবহারকারীকে ম্যানুয়ালি লগইন প্রক্রিয়া শুরু করতে অনুরোধ জানানো হয়। পরিবর্তে, আপনি যদি ব্যবহারকারীর ইন্টারঅ্যাকশনের জন্য অপেক্ষা না করে লোড হওয়ার সাথে সাথে google.accounts.user.login() কল করেন, তাহলে আপনার পৃষ্ঠায় আসার পর ব্যবহারকারী প্রথম যে জিনিসটি দেখতে পান তা হল একটি Google লগইন পৃষ্ঠা৷ ব্যবহারকারী যদি লগ ইন না করার সিদ্ধান্ত নেন, তাহলে Google তাদের আপনার পৃষ্ঠায় ফেরত পাঠাবে না; তাই ব্যবহারকারীর দৃষ্টিকোণ থেকে, তারা আপনার পৃষ্ঠা দেখার চেষ্টা করেছিল কিন্তু তাদের পাঠানো হয়েছিল এবং ফেরত পাঠানো হয়নি৷ এই দৃশ্যটি ব্যবহারকারীদের কাছে বিভ্রান্তিকর এবং হতাশাজনক হতে পারে। এই নথিতে উদাহরণ কোডে, উদাহরণটিকে সহজ রাখতে আমরা লোড করার সাথে সাথে google.accounts.user.login() এ কল করব, কিন্তু আমরা বাস্তব-বিশ্বের ক্লায়েন্ট অ্যাপ্লিকেশনগুলির জন্য এই পদ্ধতির সুপারিশ করি না৷

মনে রাখবেন token নামের ভেরিয়েবলের সাথে আপনাকে কিছু করতে হবে না; ক্লায়েন্ট লাইব্রেরি টোকেন ট্র্যাক রাখে, তাই আপনাকে করতে হবে না।

দ্রষ্টব্য : আপনি যখন একটি নতুন BloggerService অবজেক্ট তৈরি করেন, তখন ক্লায়েন্ট লাইব্রেরি google.gdata.client.init() নামে একটি পদ্ধতি কল করে, যা পরীক্ষা করে যে ক্লায়েন্টটি যে ব্রাউজারে চলছে সেটি সমর্থিত কিনা। যদি কোনো ত্রুটি থাকে, তাহলে ক্লায়েন্ট লাইব্রেরি ব্যবহারকারীকে একটি ত্রুটি বার্তা প্রদর্শন করে। আপনি যদি এই ধরণের ত্রুটি নিজে পরিচালনা করতে চান, তাহলে পরিষেবাটি তৈরি করার আগে আপনি স্পষ্টভাবে google.gdata.client.init(handleInitError) কল করতে পারেন, যেখানে handleInitError() আপনার কাজ। যদি একটি init ত্রুটি দেখা দেয়, তাহলে আপনার ফাংশন একটি মানক ত্রুটি অবজেক্ট পায়; আপনি যে বস্তুর সাথে যা খুশি করতে পারেন।

google.accounts.user.logout() কল করে আপনি এটি প্রত্যাহার না করা পর্যন্ত টোকেনটি বৈধ থাকবে :

function logMeOut() {
  google.accounts.user.logout();
}

আপনি যদি logout() কল না করেন, তাহলে টোকেনটি সঞ্চয়কারী কুকি দুই বছর স্থায়ী হয়, যদি না ব্যবহারকারী এটি মুছে দেন। কুকিটি ব্রাউজার সেশন জুড়ে ধরে রাখা হয়, তাই ব্যবহারকারী তাদের ব্রাউজারটি বন্ধ করতে পারে এবং তারপরে এটি পুনরায় খুলতে পারে এবং আপনার ক্লায়েন্টে ফিরে আসতে পারে এবং তারা এখনও লগ ইন করতে পারে।

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

আরও দুটি AuthSub পদ্ধতি রয়েছে যা আপনি বিভিন্ন প্রসঙ্গে দরকারী বলে মনে করতে পারেন:

  • google.accounts.user.checkLogin(scope) আপনাকে বলে যে ব্রাউজারে বর্তমানে প্রদত্ত সুযোগের জন্য একটি প্রমাণীকরণ টোকেন আছে কিনা।
  • google.accounts.user.getInfo() ডিবাগিং ব্যবহারের জন্য বর্তমান টোকেন সম্পর্কে বিস্তারিত তথ্য প্রদান করে।

AuthSub-এর সাথে ইন্টারঅ্যাক্ট করার জন্য JavaScript ব্যবহার করার বিষয়ে বিস্তারিত জানার জন্য, টোকেন ম্যানেজমেন্ট এবং checkLogin() এবং getInfo() এর তথ্য সহ, JavaScript ক্লায়েন্ট লাইব্রেরি ডকুমেন্টের সাথে "AuthSub" প্রমাণীকরণের ব্যবহার দেখুন।

উপরে ফিরে যাও