গুগল কালো সম্প্রদায়ের জন্য জাতিগত সমতা উন্নয়নে প্রতিশ্রুতিবদ্ধ। দেখ কিভাবে.

টিভি এবং সীমাবদ্ধ-ইনপুট ডিভাইস অ্যাপ্লিকেশনগুলির জন্য OAuth 2.0

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

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

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

বিকল্প

আপনি যদি অ্যান্ড্রয়েড, আইওএস, ম্যাকস, লিনাক্স, বা উইন্ডোজ (ইউনিভার্সাল উইন্ডোজ প্ল্যাটফর্ম সহ) এর মতো প্ল্যাটফর্মের জন্য অ্যাপ্লিকেশন লিখছেন যা ব্রাউজারটিতে অ্যাক্সেস এবং সম্পূর্ণ ইনপুট ক্ষমতা রাখে, মোবাইল এবং ডেস্কটপ অ্যাপ্লিকেশনগুলির জন্য ওআউথ ২.০ প্রবাহ ব্যবহার করুন । (আপনার অ্যাপ্লিকেশনটি গ্রাফিকাল ইন্টারফেস ব্যতীত কমান্ড-লাইন সরঞ্জাম হলেও আপনার সেই প্রবাহটি ব্যবহার করা উচিত))

পূর্বশর্ত

আপনার প্রকল্পের জন্য API গুলি সক্ষম করুন

গুগল এপিআইগুলিকে কল করে এমন কোনও অ্যাপ্লিকেশন API Console এ সেইগুলি সক্ষম করতে হবে।

আপনার প্রকল্পের জন্য একটি API সক্ষম করতে:

  1. Google API Console এ Open the API Library
  2. If prompted, select a project, or create a new one.
  3. API Library প্রোডাক্ট পরিবার এবং জনপ্রিয়তার দ্বারা গোষ্ঠীযুক্ত সমস্ত উপলব্ধ API গুলি তালিকাভুক্ত করে। আপনি যে APIটি সক্ষম করতে চান তা যদি তালিকায় দৃশ্যমান না হয় তবে এটি সন্ধানের জন্য অনুসন্ধানটি ব্যবহার করুন, বা এর সাথে সম্পর্কিত পণ্য পরিবারে সমস্ত দেখুন ক্লিক করুন।
  4. আপনি সক্ষম করতে চান এমন API নির্বাচন করুন, তারপরে সক্ষম বোতামটি ক্লিক করুন।
  5. If prompted, enable billing.
  6. If prompted, read and accept the API's Terms of Service.

অনুমোদনের শংসাপত্র তৈরি করুন

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

  1. Go to the Credentials page.
  2. শংসাপত্র তৈরি করতে ক্লিক করুন> OAuth ক্লায়েন্ট আইডি
  3. টিভি এবং সীমিত ইনপুট ডিভাইসের অ্যাপ্লিকেশন ধরণের নির্বাচন করুন।
  4. আপনার OAuth 2.0 ক্লায়েন্টের নাম দিন এবং তৈরি করুন ক্লিক করুন

অ্যাক্সেস স্কোপগুলি সনাক্ত করুন

স্কোপগুলি আপনার অ্যাপ্লিকেশনটিকে যে পরিমাণ অ্যাক্সেস মঞ্জুরি দেয় তা নিয়ন্ত্রণ করতে ব্যবহারকারীদের সক্ষম করার জন্য প্রয়োজনীয় সংস্থানগুলিতে কেবল অ্যাক্সেসের অনুরোধ করতে সক্ষম করে application সুতরাং, অনুরোধ করা স্কোপের সংখ্যা এবং ব্যবহারকারীর সম্মতি পাওয়ার সম্ভাবনার মধ্যে একটি বিপরীত সম্পর্ক থাকতে পারে।

আপনি OAuth 2.0 অনুমোদনের প্রয়োগ শুরু করার আগে, আমরা আপনাকে সুপারিশ করি যে আপনার স্কোপগুলিকে অ্যাক্সেস করার অনুমতি প্রয়োজন হবে তা চিহ্নিত করুন।

ইনস্টল থাকা অ্যাপ্লিকেশন বা ডিভাইসের জন্য অনুমোদিত স্কোপ তালিকা দেখুন।

OAuth 2.0 অ্যাক্সেস টোকেন প্রাপ্ত

আপনার অ্যাপ্লিকেশন সীমিত ইনপুট ক্ষমতা সহ কোনও ডিভাইসে চলমান থাকলেও এই অনুমোদনের প্রবাহটি সম্পূর্ণ করতে ব্যবহারকারীদের আরও সমৃদ্ধ ইনপুট ক্ষমতা সহ একটি ডিভাইসে পৃথক অ্যাক্সেস থাকতে হবে। প্রবাহের নিম্নলিখিত পদক্ষেপ রয়েছে:

  1. আপনার অ্যাপ্লিকেশনটি গুগলের অনুমোদনের সার্ভারে একটি অনুরোধ প্রেরণ করে যা আপনার অ্যাপ্লিকেশনটি অ্যাক্সেসের অনুমতিের জন্য অনুরোধ করবে এমন স্কোপগুলি সনাক্ত করে।
  2. সার্ভারটি পরবর্তী ধাপগুলিতে ব্যবহার করা কয়েকটি তথ্যের টুকরোগুলির সাথে সাড়া দেয় যেমন একটি ডিভাইস কোড এবং ব্যবহারকারীর কোড।
  3. আপনি এমন তথ্য প্রদর্শন করেন যা ব্যবহারকারী আপনার অ্যাপ্লিকেশনটিকে অনুমোদিত করতে আলাদা ডিভাইসে প্রবেশ করতে পারে।
  4. আপনার অ্যাপ্লিকেশনটি ব্যবহারকারী আপনার অ্যাপটিকে অনুমোদিত করেছে কিনা তা নির্ধারণের জন্য গুগলের অনুমোদনের সার্ভারে পোলিং শুরু করে।
  5. ব্যবহারকারী আরও সমৃদ্ধ ইনপুট ক্ষমতা সহ একটি ডিভাইসে স্যুইচ করে, একটি ওয়েব ব্রাউজার চালু করে, 3 য় ধাপে প্রদর্শিত ইউআরএলটিতে নেভিগেট করে এবং code ধাপে প্রদর্শিত একটি কোডে প্রবেশ করে The ব্যবহারকারী তারপরে আপনার অ্যাপ্লিকেশনটিতে অ্যাক্সেস (বা অস্বীকার) দিতে পারবেন।
  6. আপনার পোলিংয়ের অনুরোধের পরবর্তী প্রতিক্রিয়াতে আপনার অ্যাপ্লিকেশনটির ব্যবহারকারীর পক্ষে অনুরোধ অনুমোদনের দরকার টোকেন রয়েছে। (যদি ব্যবহারকারী আপনার অ্যাপ্লিকেশন অ্যাক্সেস করতে অস্বীকার করে তবে প্রতিক্রিয়াতে টোকেন নেই not)

নীচের চিত্রটি এই প্রক্রিয়াটির চিত্র তুলে ধরেছে:

ব্যবহারকারী একটি পৃথক ডিভাইসে লগ ইন করে যার একটি ব্রাউজার রয়েছে

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

পদক্ষেপ 1: ডিভাইস এবং ব্যবহারকারী কোডগুলির জন্য অনুরোধ করুন

এই পদক্ষেপে, আপনার ডিভাইসটি https://oauth2.googleapis.com/device/code এ গুগলের অনুমোদনের সার্ভারে একটি HTTP পোষ্ট অনুরোধ প্রেরণ করে, যা আপনার অ্যাপ্লিকেশনটি ব্যবহারকারীদের অ্যাক্সেস করতে চায় এমন অ্যাক্সেস স্কোপের পাশাপাশি আপনার অ্যাপ্লিকেশনটিকে সনাক্ত করে পক্ষে। device_authorization_endpoint মেটাডেটা মানটি ব্যবহার করে আবিষ্কার URL নথি থেকে আপনার এই URL টি পুনরুদ্ধার করা উচিত। নিম্নলিখিত HTTP অনুরোধের প্যারামিটারগুলি অন্তর্ভুক্ত করুন:

পরামিতি
client_id প্রয়োজনীয়

আপনার আবেদনের জন্য ক্লায়েন্ট আইডি। আপনি API Console Credentials page এই মানটি পেতে পারেন।

scope প্রয়োজনীয়

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

স্কোপগুলি আপনার অ্যাপ্লিকেশনটিকে যে পরিমাণ অ্যাক্সেস মঞ্জুরি দেয় তা নিয়ন্ত্রণ করতে ব্যবহারকারীদের সক্ষম করার জন্য প্রয়োজনীয় সংস্থানগুলিতে কেবল অ্যাক্সেসের অনুরোধ করতে সক্ষম করে application সুতরাং, অনুরোধ করা স্কোপের সংখ্যা এবং ব্যবহারকারীর সম্মতি পাওয়ার সম্ভাবনার মধ্যে একটি বিপরীত সম্পর্ক রয়েছে।

উদাহরণ

নিম্নলিখিত স্নিপেট একটি নমুনা অনুরোধ দেখায়:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=client_id&scope=email%20profile

এই অনুরোধটি একই অনুরোধটি প্রেরণের জন্য একটি curl কমান্ড দেখায়:

curl -d "client_id=client_id&scope=email%20profile" \
     https://oauth2.googleapis.com/device/code

পদক্ষেপ 2: অনুমোদনের সার্ভার প্রতিক্রিয়া পরিচালনা করুন

অনুমোদন সার্ভার নিম্নলিখিত প্রতিক্রিয়াগুলির মধ্যে একটি প্রদান করবে:

সাফল্য সাড়া

যদি অনুরোধটি বৈধ হয়, তবে আপনার প্রতিক্রিয়াটি হ'ল JSON অবজেক্টে নিম্নলিখিত বৈশিষ্ট্যগুলি সহ:

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

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

expires_in device_code এবং user_code কোড user_code কয়েক সেকেন্ডের user_code বৈধ। যদি, সেই সময়ে, ব্যবহারকারী অনুমোদনের প্রবাহটি সম্পূর্ণ না করে এবং আপনার ডিভাইসও ব্যবহারকারীর সিদ্ধান্ত সম্পর্কে তথ্য পুনরুদ্ধার করতে পোল না করে তবে আপনাকে এই প্রক্রিয়াটি পদক্ষেপ 1 থেকে পুনরায় আরম্ভ করতে হবে।
interval আপনার ডিভাইসের ভোটগ্রহণের অনুরোধের মধ্যে অপেক্ষা করা উচিত যে সময়ের সেকেন্ডে। উদাহরণস্বরূপ, মানটি যদি 5 হয় তবে আপনার ডিভাইসটির প্রতি পাঁচ সেকেন্ডে গুগলের অনুমোদনের সার্ভারে একটি পোলিংয়ের অনুরোধ প্রেরণ করা উচিত। আরও তথ্যের জন্য 3 পদক্ষেপ দেখুন।
user_code একটি কেস-সংবেদনশীল মান যা অ্যাপ্লিকেশনটিতে অ্যাক্সেসের জন্য অনুরোধ করছে এমন স্কোপগুলিকে গুগলে সনাক্ত করে। আপনার ব্যবহারকারী ইন্টারফেসটি সমৃদ্ধ ইনপুট ক্ষমতা সহ পৃথক ডিভাইসে এই মানটি প্রবেশ করতে ব্যবহারকারীকে নির্দেশ দেবে। গুগল তারপরে ব্যবহারকারীকে আপনার অ্যাপ্লিকেশনটিতে অ্যাক্সেস দিতে অনুরোধ করার সময় স্কোপের সঠিক সেটটি প্রদর্শনের জন্য মানটি ব্যবহার করে।
verification_url একটি ইউআরএল যা ব্যবহারকারীকে পৃথক ডিভাইসে নেভিগেট করতে হবে user_code প্রবেশ করতে এবং আপনার অ্যাপ্লিকেশনটিতে অ্যাক্সেস মঞ্জুর করতে বা অস্বীকার করতে। আপনার ব্যবহারকারী ইন্টারফেসটিও এই মানটি প্রদর্শন করবে।

নিম্নলিখিত স্নিপেট একটি নমুনা প্রতিক্রিয়া দেখায়:

{
  "device_code": "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code": "GQVQ-JKEC",
  "verification_url": "https://www.google.com/device",
  "expires_in": 1800,
  "interval": 5
}

কোটা সাড়া ছাড়িয়েছে

যদি আপনার ডিভাইস কোড অনুরোধগুলি আপনার ক্লায়েন্ট আইডির সাথে সম্পর্কিত কোটা অতিক্রম করেছে, তবে আপনি নীচের ত্রুটিযুক্ত একটি 403 প্রতিক্রিয়া পাবেন:

{
  "error_code": "rate_limit_exceeded"
}

সেক্ষেত্রে অনুরোধের হার কমাতে ব্যাকফ কৌশলটি ব্যবহার করুন।

পদক্ষেপ 3: ব্যবহারকারীর কোডটি প্রদর্শন করুন

পদক্ষেপ 2 এ প্রাপ্ত verification_url এবং ব্যবহারকারীর কোড কোড ব্যবহার করুন user_code উভয় মানেই US-ASCII অক্ষর সেট থেকে যে কোনও মুদ্রণযোগ্য অক্ষর থাকতে পারে। আপনি যে বিষয়বস্তু ব্যবহারকারীর কাছে প্রদর্শন করছেন তা ব্যবহারকারীকে একটি পৃথক ডিভাইসে verification_url নেভিগেট করতে এবং ব্যবহারকারীর user_code প্রবেশের user_code

নিম্নলিখিত নিয়মগুলি মাথায় রেখে আপনার ব্যবহারকারী ইন্টারফেস (ইউআই) ডিজাইন করুন:

  • user_code
    • user_code এমন একটি ক্ষেত্রে অবশ্যই প্রদর্শিত হবে যা 15 'ডাব্লু' আকারের অক্ষরগুলি পরিচালনা করতে পারে। অন্য কথায়, আপনি যদি WWWWWWWWWWWWWWW সঠিকভাবে প্রদর্শন করতে পারেন তবে আপনার ইউআইটি বৈধ, এবং আপনার user_code প্রদর্শিত হবে তা পরীক্ষা করার সময় আমরা সেই স্ট্রিং মানটি ব্যবহার করার পরামর্শ user_code
    • user_code কেস-সংবেদনশীল এবং user_code পরিবর্তন করা উচিত নয়, যেমন কেস পরিবর্তন করা বা অন্য ফর্ম্যাটিং অক্ষর user_code
  • verification_url
    • আপনি verification_url প্রদর্শন করেন সেই স্থানটি 40 টি অক্ষরের দীর্ঘ ইউআরএল স্ট্রিং পরিচালনা করতে যথেষ্ট প্রশস্ত হওয়া উচিত।
    • প্রদর্শনের জন্য স্কিমটি অপশনালিকভাবে অপসারণ করা ছাড়া আপনার কোনওভাবেই verification_url পরিবর্তন করা উচিত নয়। আপনি যদি ডিসপ্লে কারণে https:// (যেমন https:// ) কে ইউআরএল থেকে সরিয়ে দেওয়ার পরিকল্পনা করেন তবে নিশ্চিত হয়ে নিন যে আপনার অ্যাপ্লিকেশনটি http এবং https উভয় রূপই পরিচালনা করতে পারে।

পদক্ষেপ 4: গুগলের অনুমোদনের সার্ভারটি পোল করুন

যেহেতু ব্যবহারকারী verification_url নেভিগেট করতে এবং অ্যাক্সেস মঞ্জুর করতে (বা অস্বীকার করতে) একটি পৃথক ডিভাইস ব্যবহার করবে, তাই ব্যবহারকারী অ্যাক্সেসের অনুরোধের প্রতিক্রিয়া জানালে অনুরোধকারী ডিভাইসটি স্বয়ংক্রিয়ভাবে অবহিত হয় না। সেই কারণে, অনুরোধকারী ডিভাইসটি কখন ব্যবহারকারী এই অনুরোধের প্রতিক্রিয়া জানিয়েছে তা নির্ধারণ করতে গুগলের অনুমোদনের সার্ভারটি পোল করা প্রয়োজন।

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

পোলের শেষ পয়েন্টের URL হ'ল https://oauth2.googleapis.com/token । ভোটদানের অনুরোধে নিম্নলিখিত প্যারামিটার রয়েছে:

পরামিতি
client_id আপনার আবেদনের জন্য ক্লায়েন্ট আইডি। আপনি API Console Credentials page এই মানটি পেতে পারেন।
client_secret প্রদত্ত জন্য ক্লায়েন্ট সিক্রেট client_id । আপনি API Console Credentials page এই মানটি পেতে পারেন।
device_code device_code পদক্ষেপ 2- এ অনুমোদনের সার্ভার দ্বারা ফিরে এসেছে।
grant_type এই মানটি urn:ietf:params:oauth:grant-type:device_code সেট করুন urn:ietf:params:oauth:grant-type:device_code

উদাহরণ

নিম্নলিখিত স্নিপেট একটি নমুনা অনুরোধ দেখায়:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=client_id&
client_secret=client_secret&
device_code=device_code&
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code

এই অনুরোধটি একই অনুরোধটি প্রেরণের জন্য curl কমান্ড দেখায়:

curl -d "client_id=client_id&client_secret=client_secret& \
         device_code=device_code& \
         grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code" \
         -H "Content-Type: application/x-www-form-urlencoded" \
         /token

পদক্ষেপ 5: ব্যবহারকারী অ্যাক্সেস অনুরোধে সাড়া দেয়

নিম্নলিখিত ধাপটি ব্যবহারকারীরা যখন verification_url নেভিগেট করেন যা আপনি যে পদক্ষেপ 3 তে প্রদর্শন করেছেন তার অনুরূপ একটি পৃষ্ঠা দেখায়:

একটি কোড প্রবেশ করে একটি ডিভাইস সংযুক্ত করুন

ব্যবহারকারী_ user_code প্রবেশ করার পরে এবং যদি ইতিমধ্যে লগ-ইন না হয়ে থাকে, গুগলে লগ ইন করে, ব্যবহারকারী নীচের user_code মতো একটি সম্মতি পর্দা দেখে:

ডিভাইস ক্লায়েন্টের সম্মতির পর্দার উদাহরণ

পদক্ষেপ।: পোলিংয়ের অনুরোধগুলিতে প্রতিক্রিয়াগুলি পরিচালনা করুন

গুগলের অনুমোদনের সার্ভারটি প্রতিটি পোলিংয়ের অনুরোধের সাথে নিম্নলিখিত প্রতিক্রিয়াগুলির সাথে সাড়া দেয়:

অ্যাক্সেস মঞ্জুর

যদি ব্যবহারকারী ডিভাইসে অ্যাক্সেস Allow করে (সম্মতি স্ক্রিনে অনুমতি Allow ক্লিক করে), তবে প্রতিক্রিয়াটিতে অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকন রয়েছে। টোকেনগুলি আপনার ডিভাইসটি ব্যবহারকারীর পক্ষে গুগল এপিআইগুলিতে অ্যাক্সেস করতে সক্ষম করে। (প্রতিক্রিয়াতে scope সম্পত্তি ডিভাইসটি কোন API গুলি অ্যাক্সেস করতে পারে তা নির্ধারণ করে))

এই ক্ষেত্রে, এপিআই প্রতিক্রিয়াতে নিম্নলিখিত ক্ষেত্রগুলি রয়েছে:

ক্ষেত্র
access_token আপনার অ্যাপ্লিকেশন কোনও গুগল এপিআই অনুরোধ অনুমোদিত করতে টোকেনটি প্রেরণ করে।
expires_in সেকেন্ডের মধ্যে অ্যাক্সেস টোকেনের অবশিষ্ট জীবনকাল।
refresh_token একটি নতুন টোকেন যা আপনি নতুন অ্যাক্সেস টোকেন পেতে ব্যবহার করতে পারেন। রিফ্রেশ টোকেনগুলি ব্যবহারকারী অ্যাক্সেস প্রত্যাহার না করা অবধি বৈধ। নোট করুন যে রিফ্রেশ টোকেন সর্বদা ডিভাইসের জন্য ফিরে আসে।
scope অ্যাক্সেস_ access_token দ্বারা প্রদত্ত অ্যাক্সেসের স্কোপগুলি স্থান-সীমিত, কেস-সংবেদনশীল স্ট্রিংগুলির তালিকা হিসাবে প্রকাশিত।
token_type টোকেনের ধরণটি ফেরত। এই সময়ে, এই ক্ষেত্রের মান সর্বদা Bearer সেট করা থাকে।

নিম্নলিখিত স্নিপেট একটি নমুনা প্রতিক্রিয়া দেখায়:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
  "token_type": "Bearer",
  "refresh_token": "1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

অ্যাক্সেস টোকেনগুলির একটি সীমিত জীবনকাল রয়েছে। আপনার অ্যাপ্লিকেশনটির যদি দীর্ঘ সময় ধরে কোনও এপিআইতে অ্যাক্সেসের প্রয়োজন হয় তবে এটি নতুন অ্যাক্সেস টোকেনটি রিফ্রেশ টোকন ব্যবহার করতে পারে । আপনার অ্যাপ্লিকেশনটির যদি এই ধরণের অ্যাক্সেসের প্রয়োজন হয় তবে এটি পরে ব্যবহারের জন্য রিফ্রেশ টোকেনটি সঞ্চয় করতে হবে।

অ্যাক্সেস অস্বীকৃত

যদি ব্যবহারকারী ডিভাইসে অ্যাক্সেস দিতে অস্বীকৃতি জানায় তবে সার্ভারের প্রতিক্রিয়াতে একটি 403 HTTP প্রতিক্রিয়া স্থিতি কোড রয়েছে ( Forbidden )। প্রতিক্রিয়াটিতে নিম্নলিখিত ত্রুটি রয়েছে:

{
  "error": "access_denied",
  "error_description": "Forbidden"
}

অনুমোদন মুলতুবি

যদি ব্যবহারকারী এখনও অনুমোদনের প্রবাহটি সম্পন্ন করেনি, তবে সার্ভারটি একটি 428 এইচটিটিপি প্রতিক্রিয়া স্থিতি কোড দেয় ( Precondition Required )। প্রতিক্রিয়াটিতে নিম্নলিখিত ত্রুটি রয়েছে:

{
  "error": "authorization_pending",
  "error_description": "Precondition Required"
}

খুব ঘন ঘন পোলিং

যদি ডিভাইসটি খুব ঘন ঘন পোলিংয়ের অনুরোধগুলি প্রেরণ করে তবে সার্ভারটি একটি 403 HTTP প্রতিক্রিয়া স্থিতি কোড ( Forbidden ) প্রদান করে returns প্রতিক্রিয়াটিতে নিম্নলিখিত ত্রুটি রয়েছে:

{
  "error": "slow_down",
  "error_description": "Forbidden"
}

অন্যান্য ত্রুটি

ভোটদানের অনুরোধে কোনও প্রয়োজনীয় প্যারামিটার অনুপস্থিত বা ভুল প্যারামিটার মান থাকলে অনুমোদন সার্ভার ত্রুটিও ফিরিয়ে দেয়। এই অনুরোধগুলির সাধারণত একটি 400 ( Bad Request ) বা 401 ( Unauthorized ) HTTP প্রতিক্রিয়া স্থিতি কোড থাকে। এই ত্রুটিগুলির মধ্যে রয়েছে:

ত্রুটি HTTP স্থিতি কোড Code বর্ণনা
invalid_client 401 OAuth ক্লায়েন্ট খুঁজে পাওয়া যায় নি। উদাহরণস্বরূপ, client_id প্যারামিটার মানটি অবৈধ থাকলে এই ত্রুটি ঘটে।
invalid_grant 400 code প্যারামিটার মানটি অবৈধ।
unsupported_grant_type 400 grant_type প্যারামিটার মানটি অবৈধ।

গুগল এপিআইগুলিতে কল করা হচ্ছে

আপনার অ্যাপ্লিকেশন কোনও অ্যাক্সেস টোকেন পাওয়ার পরে, যদি আপনি এপিআই দ্বারা প্রয়োজনীয় অ্যাক্সেসের সুযোগ (গুলি) মঞ্জুর করা হয়ে থাকে তবে আপনি প্রদত্ত ব্যবহারকারীর অ্যাকাউন্টের পক্ষ থেকে একটি গুগল এপিআইতে কল করার জন্য টোকনটি ব্যবহার করতে পারেন। এই কাজের জন্য, অ্যাক্সেস API করার জন্য একটি অনুরোধ IN টোকেন পারেন একটি অন্তর্ভুক্ত করে অন্তর্ভুক্ত access_token ক্যোয়ারী মাপদন্ড অথবা একটি Authorization HTTP শিরোলেখ Bearer মান। যখন সম্ভব হয়, এইচটিটিপি শিরোনামটি পছন্দনীয়, কারণ কোয়েরি স্ট্রিংগুলি সার্ভার লগগুলিতে দৃশ্যমান থাকে। বেশিরভাগ ক্ষেত্রে আপনি গুগল এপিআইগুলিতে আপনার কল সেট আপ করতে ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে পারেন (উদাহরণস্বরূপ, ড্রাইভ ফাইলস এপিআইতে কল করার সময়)।

আপনি সমস্ত গুগল এপিআই চেষ্টা করে দেখতে পারেন এবং OAuth 2.0 খেলার মাঠে তাদের স্কোপগুলি দেখতে পারেন।

HTTP উদাহরণ পেতে

Authorization: Bearer ব্যবহার করে drive.files এন্ডপয়েন্ট (ড্রাইভ ফাইলস এপিআই) তে একটি কল: drive.files এইচটিটিপি শিরোনাম নিম্নলিখিতগুলির মতো দেখাবে। মনে রাখবেন যে আপনার নিজের অ্যাক্সেস টোকেন নির্দিষ্ট করতে হবে:

GET /drive/v2/files HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

access_token ক্যোয়ারী স্ট্রিং প্যারামিটার ব্যবহার করে প্রমাণীকৃত ব্যবহারকারীর জন্য একই API তে এখানে কল রয়েছে:

GET https://www.googleapis.com/drive/v2/files?access_token=access_token

curl উদাহরণ

আপনি এই কমান্ডগুলি curl কমান্ড-লাইন অ্যাপ্লিকেশন দিয়ে পরীক্ষা করতে পারেন। এখানে একটি উদাহরণ যা HTTP শিরোনাম বিকল্পটি ব্যবহার করে (পছন্দসই):

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/drive/v2/files

অথবা, বিকল্পভাবে ক্যোরি স্ট্রিং প্যারামিটার বিকল্প:

curl https://www.googleapis.com/drive/v2/files?access_token=access_token

একটি অ্যাক্সেস টোকেন রিফ্রেশ

টোকেন অ্যাক্সেস পর্যায়ক্রমে একটি সম্পর্কিত API অনুরোধের জন্য অবৈধ শংসাপত্রগুলি হয়ে যায়। আপনি যদি টোকেনের সাথে সম্পর্কিত স্কোপগুলিতে অফলাইনে অ্যাক্সেসের অনুরোধ করেন তবে আপনি অনুমতিের জন্য ব্যবহারকারীকে অনুরোধ না করেই একটি অ্যাক্সেস টোকন রিফ্রেশ করতে পারেন।

অ্যাক্সেস টোকেনটি রিফ্রেশ করার জন্য, আপনার অ্যাপ্লিকেশনটি গুগলের অনুমোদনের সার্ভারে ( https://oauth2.googleapis.com/token ) একটি HTTPS POST অনুরোধ প্রেরণ করে যাতে নিম্নলিখিত প্যারামিটারগুলি অন্তর্ভুক্ত রয়েছে:

ক্ষেত্র
client_id API Console থেকে ক্লায়েন্ট আইডি প্রাপ্ত।
client_secret API Console থেকে ক্লায়েন্ট সিক্রেট প্রাপ্ত।
grant_type OAuth 2.0 স্পেসিফিকেশনে সংজ্ঞায়িত হিসাবে, এই ক্ষেত্রটির মান অবশ্যই refresh_token সেট করা refresh_token
refresh_token অনুমোদনের কোড এক্সচেঞ্জ থেকে রিফ্রেশ টোকেন ফিরে এসেছে।

নিম্নলিখিত স্নিপেট একটি নমুনা অনুরোধ দেখায়:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=your_client_id&
client_secret=your_client_secret&
refresh_token=refresh_token&
grant_type=refresh_token

ব্যবহারকারী যতক্ষণ না অ্যাপ্লিকেশনটিতে দেওয়া অ্যাক্সেস বাতিল করে দেয় না, টোকেন সার্ভার একটি JSON অবজেক্ট ফেরত দেয় যাতে একটি নতুন অ্যাক্সেস টোকেন থাকে। নিম্নলিখিত স্নিপেট একটি নমুনা প্রতিক্রিয়া দেখায়:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "https://www.googleapis.com/auth/drive.metadata.readonly",
  "token_type": "Bearer"
}

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

একটি টোকেন প্রত্যাহার করা হচ্ছে

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

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

প্রোগ্রামিকভাবে একটি টোকেন প্রত্যাহার করতে, আপনার অ্যাপ্লিকেশনটি https://oauth2.googleapis.com/revoke একটি অনুরোধ করে এবং টোকেনটিকে প্যারামিটার হিসাবে অন্তর্ভুক্ত করে:

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis.com/revoke?token={token}

টোকেনটি অ্যাক্সেস টোকেন বা রিফ্রেশ টোকেন হতে পারে। যদি টোকেনটি একটি অ্যাক্সেস টোকেন হয় এবং এটিতে একটি সম্পর্কিত রিফ্রেশ টোকেন থাকে তবে রিফ্রেশ টোকেনটিও প্রত্যাহার করা হবে।

যদি প্রত্যাহারটি সফলভাবে প্রক্রিয়া করা হয়, তবে প্রতিক্রিয়াটির HTTP স্থিতি কোডটি 200 হয় is ত্রুটির অবস্থার জন্য, একটি ত্রুটি কোডের সাথে একটি এইচটিটিপি স্থিতি কোড 400 ফিরিয়ে দেওয়া হয়েছে।

অনুমোদিত স্কোপস

ডিভাইসগুলির জন্য OAuth 2.0 প্রবাহ কেবলমাত্র নিম্নলিখিত স্কোপগুলির জন্য সমর্থিত:

ওপেনআইডি কানেক্ট , গুগল সাইন ইন

  • email
  • openid
  • profile

ড্রাইভ এপিআই

  • https://www.googleapis.com/auth/drive.appdata
  • https://www.googleapis.com/auth/drive.file

ইউটিউব এপিআই

  • https://www.googleapis.com/auth/youtube
  • https://www.googleapis.com/auth/youtube.readonly