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

সার্ভার থেকে সার্ভার অ্যাপ্লিকেশনগুলির জন্য OAuth 2.0 ব্যবহার করা

গুগল ওআউথ ২.০ সিস্টেম সার্ভার-টু-সার্ভার ইন্টারঅ্যাকশনগুলিকে সমর্থন করে যেমন একটি ওয়েব অ্যাপ্লিকেশন এবং গুগল পরিষেবার মধ্যে রয়েছে। এই দৃশ্যের জন্য আপনার একটি পরিষেবা অ্যাকাউন্ট প্রয়োজন যা কোনও ব্যক্তিগত অ্যাকাউন্টের পরিবর্তে আপনার অ্যাপ্লিকেশনটির সাথে সম্পর্কিত এমন অ্যাকাউন্ট। আপনার অ্যাপ্লিকেশন পরিষেবা অ্যাকাউন্টের পক্ষ থেকে গুগল এপিআইগুলিকে কল করে, যাতে ব্যবহারকারীরা সরাসরি জড়িত না। এই দৃশ্যটিকে কখনও কখনও "দ্বি-পাদদেশের OAuth" বা "2LO" বলা হয়। (সম্পর্কিত শব্দ "থ্রি-লেগড ওআউথ" বলতে এমন দৃশ্যাবলিকে বোঝায় যেগুলিতে আপনার অ্যাপ্লিকেশনটি শেষ ব্যবহারকারীদের পক্ষে গুগল এপিআইগুলিতে কল করে এবং এতে কখনও কখনও ব্যবহারকারীর সম্মতিও প্রয়োজন হয়))

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

গুগল ওয়ার্কস্পেস ডোমেন প্রশাসকরা পরিষেবা অ্যাকাউন্টগুলিতে ডোমেনের ব্যবহারকারীদের পক্ষে ব্যবহারকারী ডেটা অ্যাক্সেস করতে ডোমেন-ওয়াইড কর্তৃপক্ষকে মঞ্জুরি দিতে পারে।

এই ডকুমেন্টটি বর্ণনা করে যে কোনও অ্যাপ্লিকেশন কীভাবে কোনও Google APIs ক্লায়েন্ট লাইব্রেরি (প্রস্তাবিত) বা HTTP ব্যবহার করে সার্ভার-টু-সার্ভার OAuth 2.0 প্রবাহকে সম্পূর্ণ করতে পারে complete

ওভারভিউ

সার্ভার-থেকে-সার্ভারের মিথস্ক্রিয়াকে সমর্থন করার জন্য, প্রথমে API Console এ আপনার প্রকল্পের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন। আপনি যদি আপনার গুগল ওয়ার্কস্পেস অ্যাকাউন্টে ব্যবহারকারীদের জন্য ব্যবহারকারীর ডেটা অ্যাক্সেস করতে চান তবে পরিষেবা অ্যাকাউন্টে ডোমেন-ওয়াইড অ্যাক্সেসের প্রতিনিধি দিন।

তারপরে, আপনার অ্যাপ্লিকেশনটি পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি OAuth 2.0 প্রমাণীকরণের সার্ভার থেকে অ্যাক্সেস টোকেনের জন্য অনুরোধ করে অনুমোদিত API কল করার জন্য প্রস্তুত করে।

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

একটি পরিষেবা অ্যাকাউন্ট তৈরি করা হচ্ছে

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

যদি আপনার অ্যাপ্লিকেশনটি গুগল অ্যাপ ইঞ্জিনে চলে, আপনি যখন নিজের প্রকল্পটি তৈরি করবেন তখন একটি পরিষেবা অ্যাকাউন্ট স্বয়ংক্রিয়ভাবে সেট আপ হয়ে যায়।

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

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

  1. Service accounts page খুলুন।
  2. If prompted, select a project, or create a new one.
  3. পরিষেবা অ্যাকাউন্ট তৈরি করুন করুন
  4. পরিষেবা অ্যাকাউন্টের বিশদের অধীনে পরিষেবা অ্যাকাউন্টের জন্য একটি নাম, আইডি এবং বিবরণ টাইপ করুন, তারপরে তৈরি ক্লিক করুন
  5. Alচ্ছিক: পরিষেবা অ্যাকাউন্ট অনুমতির অধীনে পরিষেবা অ্যাকাউন্টে অনুদান দেওয়ার জন্য আইএএম রোলগুলি নির্বাচন করুন, তারপরে চালিয়ে যান ক্লিক করুন।
  6. Alচ্ছিক: অনুদান ব্যবহারকারীদের এই পরিষেবা অ্যাকাউন্টে অ্যাক্সেসের আওতায়, ব্যবহারকারীদের বা গোষ্ঠীগুলিকে যোগ করুন যা পরিষেবা অ্যাকাউন্ট ব্যবহার এবং পরিচালনা করার অনুমতিপ্রাপ্ত।
  7. কী ক্লিক করুন , তারপরে তৈরি ক্লিক করুন

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

যদি আপনাকে পরিষেবা অ্যাকাউন্টে জি স্যুট ডোমেন-ওয়াইড কর্তৃপক্ষের মঞ্জুরি দেওয়ার দরকার হয় তবে আপনি যে পরিষেবা অ্যাকাউন্টটি তৈরি করেছেন তার ইমেল ঠিকানাটি ক্লিক করুন, তারপরে ইউনিক আইডি বাক্স থেকে মানটি অনুলিপি করুন।

পরিষেবা অ্যাকাউন্টে কর্তৃত্ব অর্পণ করতে, ক্লায়েন্ট আইডি হিসাবে আপনার অনুলিপি করা মানটি ব্যবহার করুন।

আপনি যে কোনও সময় API Console এ ফিরে আসতে পারেন ইমেল ঠিকানা, পাবলিক কী ফিঙ্গারপ্রিন্ট এবং অন্যান্য তথ্য দেখতে বা অতিরিক্ত পাবলিক / প্রাইভেট কী যুক্তিসমূহ তৈরি করতে। API Console পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি সম্পর্কে আরও তথ্যের জন্য API Console সহায়তা ফাইলে পরিষেবা অ্যাকাউন্টগুলি দেখুন।

পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানাটি নোট করুন এবং আপনার অ্যাপ্লিকেশনটিতে অ্যাক্সেসযোগ্য কোনও স্থানে পরিষেবা অ্যাকাউন্টের ব্যক্তিগত কী ফাইলটি সংরক্ষণ করুন। আপনার অ্যাপ্লিকেশনটির অনুমোদিত এপিআই কল করা দরকার

পরিষেবা অ্যাকাউন্টে ডোমেন-ওয়াইড কর্তৃপক্ষের প্রতিনিধি

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

কোনও পরিষেবা অ্যাকাউন্টে ডোমেন-ওয়াইড কর্তৃপক্ষের প্রতিনিধিত্ব করতে, প্রথমে Service accounts page তে বিদ্যমান পরিষেবা অ্যাকাউন্টের জন্য ডোমেন-প্রশস্ত প্রতিনিধি সক্ষম করুন বা ডোমেন-প্রশস্ত প্রতিনিধি সক্ষম করে একটি নতুন পরিষেবা অ্যাকাউন্ট তৈরি করুন

তারপরে, গুগল ওয়ার্কস্পেস ডোমেনের একজন সুপার অ্যাডমিনিস্ট্রেটরকে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে হবে:

  1. আপনার গুগল ওয়ার্কস্পেস ডোমেনের অ্যাডমিন কনসোল থেকে , প্রধান মেনু > সুরক্ষা> API কন্ট্রোলগুলিতে যান
  2. ডোমেন প্রশস্ত প্রতিনিধি ফলকটিতে, ডোমেন ওয়াইড ডেলিগেশন পরিচালনা করুন নির্বাচন করুন
  3. নতুন যুক্ত ক্লিক করুন
  4. ক্লায়েন্ট আইডি ক্ষেত্রে, পরিষেবা অ্যাকাউন্টের ক্লায়েন্ট আইডি লিখুন । আপনি Service accounts page এ আপনার পরিষেবা অ্যাকাউন্টের ক্লায়েন্ট আইডি খুঁজে পেতে পারেন।
  5. OAuth স্কোপস (কমা-বিস্মৃত) ক্ষেত্রে, আপনার অ্যাপ্লিকেশনটিতে অ্যাক্সেস দেওয়া উচিত এমন স্কোপের তালিকা লিখুন। উদাহরণস্বরূপ, আপনার অ্যাপ্লিকেশনটির যদি গুগল ড্রাইভ এপিআই এবং গুগল ক্যালেন্ডার এপিআইতে ডোমেন-ব্যাপী পূর্ণ অ্যাক্সেসের প্রয়োজন হয় তবে লিখুন: https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth / ক্যালেন্ডার
  6. অনুমোদন ক্লিক করুন।

আপনার অ্যাপ্লিকেশনটির এখন আপনার ডোমেনের ব্যবহারকারী হিসাবে ("ছদ্মবেশী" ব্যবহারকারীদের) জন্য API কল করার অধিকার রয়েছে। আপনি যখন অনুমোদিত এপিআই কল করার জন্য প্রস্তুত হন, আপনি ছদ্মবেশে ব্যবহারকারীকে নির্দিষ্ট করেন।

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

জাভা

আপনি API Console থেকে ক্লায়েন্টের ইমেল ঠিকানা এবং ব্যক্তিগত কী পাওয়ার পরে, পরিষেবার অ্যাকাউন্টের শংসাপত্রগুলি এবং আপনার অ্যাপ্লিকেশনটিতে যে অ্যাপ্লিকেশনটির অ্যাক্সেস দরকার GoogleCredential থেকে কোনও GoogleCredential অবজেক্ট তৈরি করার জন্য জাভা জন্য Google APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করুন । উদাহরণ স্বরূপ:

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.services.sqladmin.SQLAdminScopes;

// ...

GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("MyProject-1234.json"))
    .createScoped(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN));

আপনি যদি গুগল ক্লাউড প্ল্যাটফর্মে কোনও অ্যাপ্লিকেশন বিকাশ করছেন তবে আপনি তার পরিবর্তে অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি ব্যবহার করতে পারেন যা প্রক্রিয়াটিকে সহজতর করতে পারে।

ডোমেন-ওয়াইড কর্তৃপক্ষের প্রতিনিধি দিন

যদি আপনি পরিষেবা অ্যাকাউন্টে ডোমেন-ব্যাপী অ্যাক্সেসের দায়িত্ব অর্পণ করেছেন এবং আপনি কোনও ব্যবহারকারী অ্যাকাউন্টের ছদ্মবেশ তৈরি করতে চান তবে GoogleCredential অবজেক্টের createDelegated পদ্ধতিতে ব্যবহারকারীর অ্যাকাউন্টের ইমেল ঠিকানা নির্দিষ্ট করুন। উদাহরণ স্বরূপ:

GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("MyProject-1234.json"))
    .createScoped(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
    .createDelegated("user@example.com");

আপনার অ্যাপ্লিকেশনটিতে গুগল এপিআইগুলিতে কল করতে গুগল GoogleCredential অবজেক্টটি ব্যবহার করুন।

পাইথন

আপনি API Console থেকে ক্লায়েন্টের ইমেল ঠিকানা এবং ব্যক্তিগত কী পাওয়ার পরে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে পাইথনের জন্য গুগল এপিআইএস ক্লায়েন্ট লাইব্রেরি ব্যবহার করুন :

  1. পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি এবং আপনার অ্যাপ্লিকেশনটিতে অ্যাক্সেসের দরকার এমন স্কোপগুলি থেকে একটি Credentials তৈরি করুন। উদাহরণস্বরূপ:
    from google.oauth2 import service_account
    
    SCOPES = ['https://www.googleapis.com/auth/sqlservice.admin']
    SERVICE_ACCOUNT_FILE = '/path/to/service.json'
    
    credentials = service_account.Credentials.from_service_account_file(
            SERVICE_ACCOUNT_FILE, scopes=SCOPES)

    আপনি যদি গুগল ক্লাউড প্ল্যাটফর্মে কোনও অ্যাপ্লিকেশন বিকাশ করছেন তবে আপনি তার পরিবর্তে অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রগুলি ব্যবহার করতে পারেন যা প্রক্রিয়াটিকে সহজতর করতে পারে।

  2. ডোমেন-ওয়াইড কর্তৃপক্ষের প্রতিনিধি দিন

    আপনি পরিষেবা অ্যাকাউন্টে ডোমেইন ব্যাপী এক্সেস অর্পণ করেছেন এবং আপনি একটি ব্যবহারকারী অ্যাকাউন্ট ছদ্মবেশ ধারণ করতে চান তাহলে, ব্যবহার with_subject একটি বিদ্যমান পদ্ধতি ServiceAccountCredentials অবজেক্ট। উদাহরণ স্বরূপ:

    delegated_credentials = credentials.with_subject('user@example.org')

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

HTTP / REST

আপনি API Console থেকে ক্লায়েন্ট আইডি এবং ব্যক্তিগত কী পাওয়ার পরে, আপনার অ্যাপ্লিকেশনটির নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে হবে:

  1. একটি JSON ওয়েব টোকেন (JWT, উচ্চারণ, "jot") তৈরি করুন যাতে শিরোনাম, একটি দাবি সেট এবং একটি স্বাক্ষর রয়েছে।
  2. গুগল OAuth 2.0 অনুমোদন সার্ভার থেকে অ্যাক্সেস টোকেনের জন্য অনুরোধ করুন।
  3. অনুমোদনের সার্ভার যে জেএসএন প্রতিক্রিয়া দেয় তা হ্যান্ডেল করুন।

যে বিভাগগুলি অনুসরণ করে সেগুলি কীভাবে এই পদক্ষেপগুলি সম্পন্ন করবেন তা বর্ণনা করে।

যদি প্রতিক্রিয়াটিতে অ্যাক্সেস টোকেন অন্তর্ভুক্ত থাকে তবে আপনি একটি Google এপিআই কল করতে অ্যাক্সেস টোকেন ব্যবহার করতে পারেন। (যদি প্রতিক্রিয়াটিতে অ্যাক্সেস টোকেন অন্তর্ভুক্ত না করা থাকে, আপনার জেডাব্লুটিটি এবং টোকেন অনুরোধটি সঠিকভাবে গঠিত না হতে পারে, বা পরিষেবা অ্যাকাউন্টে অনুরোধ করা স্কোপগুলি অ্যাক্সেসের অনুমতি নাও পেতে পারে))

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

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

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

একটি JWT তৈরি করা হচ্ছে Creat

একটি জেডাব্লুটিটি তিনটি অংশ নিয়ে গঠিত: একটি শিরোনাম, একটি দাবি সেট এবং একটি স্বাক্ষর। শিরোনাম এবং দাবি সেট হ'ল JSON অবজেক্ট। এই JSON অবজেক্টগুলি ইউটিএফ -8 বাইটে সিরিয়ালযুক্ত করা হয়, তারপরে বেস64url এনকোডিংটি ব্যবহার করে এনকোড করা হয়। এই এনকোডিংটি বারবার এনকোডিং অপারেশনের কারণে এনকোডিং পরিবর্তনের বিরুদ্ধে স্থিতিস্থাপকতা সরবরাহ করে। শিরোনাম, দাবি সেট এবং স্বাক্ষর একটি পিরিয়ড ( . ) চরিত্রের সাথে একত্রে সম্মিলিত হয়।

একটি জেডাব্লুটিটি নীচে রচনা করা হয়েছে:

{Base64url encoded header}.{Base64url encoded claim set}.{Base64url encoded signature}

স্বাক্ষরের জন্য বেস স্ট্রিংটি নিম্নরূপ:

{Base64url encoded header}.{Base64url encoded claim set}
জেডাব্লুটি শিরোনাম গঠন করছে

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

পরিষেবা অ্যাকাউন্টগুলি আরএসএ SHA-256 অ্যালগরিদম এবং JWT টোকেন ফর্ম্যাটের উপর নির্ভর করে। ফলস্বরূপ, শিরোনামের JSON প্রতিনিধিত্ব নিম্নরূপ:

{"alg":"RS256","typ":"JWT"}

এর বেস64url উপস্থাপনাটি নিম্নরূপ:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9
JWT দাবি সেট গঠন

জেডব্লিউটি দাবির সেটটিতে জেবিডব্লিউটি সম্পর্কিত তথ্য রয়েছে, যার মধ্যে অনুরোধের অনুমতিগুলি (স্কোপস), টোকেনের লক্ষ্য, ইস্যুকারী, টোকেন জারির সময় এবং টোকেনের আজীবন অন্তর্ভুক্ত রয়েছে। বেশিরভাগ ক্ষেত্র বাধ্যতামূলক। JWT শিরোনামের মতো, JWT দাবি সেটটি একটি JSON অবজেক্ট এবং স্বাক্ষরের গণনায় ব্যবহৃত হয়।

প্রয়োজনীয় দাবি

জেডাব্লুটি দাবি দাবীতে প্রয়োজনীয় দাবিগুলি নীচে দেখানো হয়েছে। তারা দাবি সেটটিতে যে কোনও ক্রমে হাজির হতে পারে।

নাম বর্ণনা
iss পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানা।
scope অ্যাপ্লিকেশন অনুরোধ করে এমন অনুমতিগুলির একটি স্থান-সীমান্ত তালিকা।
aud দৃ of়প্রকাশের উদ্দেশ্যে লক্ষ্যযুক্ত একটি বর্ণনাকারী। অ্যাক্সেস টোকেন অনুরোধ করার সময় এই মানটি সর্বদা https://oauth2.googleapis.com/token
exp প্রতিবেদনের মেয়াদ শেষ হওয়ার সময়টি, 00:00:00 ইউটিসি, জানুয়ারী 1, 1970 থেকে সেকেন্ড হিসাবে নির্দিষ্ট করা হয়েছে This এই মান জারি হওয়া সময়ের পরে সর্বাধিক 1 ঘন্টা থাকে।
iat প্রতিবেদন জারি হওয়ার সময়, 00:00:00 ইউটিসি, 1 জানুয়ারী, 1970 সাল থেকে সেকেন্ড হিসাবে নির্দিষ্ট করা হয়েছে।

জেডব্লিউটি দাবি সেটটিতে প্রয়োজনীয় ক্ষেত্রগুলির জেএসওএন প্রতিনিধিত্ব নীচে দেখানো হয়েছে:

{
  "iss": "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com",
  "scope": "https://www.googleapis.com/auth/devstorage.read_only",
  "aud": "https://oauth2.googleapis.com/token",
  "exp": 1328554385,
  "iat": 1328550785
}
অতিরিক্ত দাবি

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

কোনও অ্যাক্সেস টোকেন পাওয়ার জন্য যা কোনও অ্যাপ্লিকেশনকে কোনও সংস্থানে প্রবেশের অনুমতি দেয়, sub ফিল্ডের মান হিসাবে JWT দাবির মধ্যে ব্যবহারকারীর ইমেল ঠিকানা অন্তর্ভুক্ত করুন।

নাম বর্ণনা
sub ব্যবহারকারীর ইমেল ঠিকানাটি যার জন্য অ্যাপ্লিকেশনটি প্রতিনিধিদের অ্যাক্সেসের জন্য অনুরোধ করছে।

যদি কোনও অ্যাপ্লিকেশনটিতে কোনও ব্যবহারকারীর ছদ্মবেশ ধারণের অনুমতি না থাকে তবে sub ফিল্ড অন্তর্ভুক্ত এমন অ্যাক্সেস টোকেন অনুরোধের প্রতিক্রিয়া একটি ত্রুটি হবে

sub ক্ষেত্রের অন্তর্ভুক্ত একটি JWT দাবির একটি উদাহরণ নীচে দেখানো হয়েছে:

{
  "iss": "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com",
  "sub": "some.user@example.com",
  "scope": "https://www.googleapis.com/auth/prediction",
  "aud": "https://oauth2.googleapis.com/token",
  "exp": 1328554385,
  "iat": 1328550785
}
JWT দাবি সেটটি এনকোডিং করছে

JWT শিরোনামের মতো, JWT দাবি সেটটি ইউটিএফ -8 এবং বেস 6464-নিরাপদ এনকোডে সিরিয়াল করা উচিত। নীচে একটি জেডব্লিউটি দাবি সেটটির একটি জেএসএন প্রতিনিধির উদাহরণ রয়েছে:

{
  "iss": "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com",
  "scope": "https://www.googleapis.com/auth/prediction",
  "aud": "https://oauth2.googleapis.com/token",
  "exp": 1328554385,
  "iat": 1328550785
}
স্বাক্ষর গণনা করা হচ্ছে

জেএসএন ওয়েব সিগনেচার (জেডাব্লুএস) হ'ল স্পেসিফিকেশন যা জেডাব্লুটিটির জন্য স্বাক্ষর তৈরির যান্ত্রিকগুলিকে গাইড করে। স্বাক্ষরের জন্য ইনপুটটি হ'ল নিম্নলিখিত সামগ্রীর বাইট অ্যারে:

{Base64url encoded header}.{Base64url encoded claim set}

JWT শিরোনামে স্বাক্ষরকারী অ্যালগরিদম স্বাক্ষরটি গণনার সময় অবশ্যই ব্যবহার করা উচিত। গুগল OAuth 2.0 অনুমোদন সার্ভার দ্বারা সমর্থিত একমাত্র সাইন ইন অ্যালগরিদম SHA-256 হ্যাশিং অ্যালগরিদম ব্যবহার করে আরএসএ। এই হিসাবে প্রকাশ করা হয় RS256 মধ্যে alg JWT হেডারের মধ্যে ক্ষেত্র।

Google API Console থেকে প্রাপ্ত প্রাইভেট কী সহ SHA256withRSA (SHA-256 হ্যাশ ফাংশন সহ আরএসএসএ-পিকেসিএস 1-ভি 1_5-SIGN নামে পরিচিত) ব্যবহার করে ইনপুটটির ইউটিএফ -8 উপস্থাপনায় স্বাক্ষর করুন। আউটপুটটি বাইট অ্যারে হবে।

স্বাক্ষরটি অবশ্যই বেস64url এনকোডড থাকতে হবে। শিরোনাম, দাবি সেট এবং স্বাক্ষর একটি পিরিয়ড ( . ) চরিত্রের সাথে একত্রে সম্মিলিত হয়। ফলাফল JWT। এটি নিম্নলিখিত হওয়া উচিত (স্পষ্টতার জন্য লাইন ব্রেকগুলি যুক্ত করা):

{Base64url encoded header}.
{Base64url encoded claim set}.
{Base64url encoded signature}

নীচে বেস6464l এনকোডিংয়ের আগে একটি JWT এর উদাহরণ দেওয়া আছে:

{"alg":"RS256","typ":"JWT"}.
{
"iss":"761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com",
"scope":"https://www.googleapis.com/auth/prediction",
"aud":"https://oauth2.googleapis.com/token",
"exp":1328554385,
"iat":1328550785
}.
[signature bytes]

নীচে একটি JWT এর একটি উদাহরণ যা স্বাক্ষরিত হয়েছে এবং সংক্রমণ করার জন্য প্রস্তুত:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI3NjEzMjY3OTgwNjktcjVtbGpsbG4xcmQ0bHJiaGc3NWVmZ2lncDM2bTc4ajVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvcHJlZGljdGlvbiIsImF1ZCI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92NC90b2tlbiIsImV4cCI6MTMyODU1NDM4NSwiaWF0IjoxMzI4NTUwNzg1fQ.UFUt59SUM2_AW4cRU8Y0BYVQsNTo4n7AFsNrqOpYiICDu37vVt-tw38UKzjmUKtcRsLLjrR3gFW3dNDMx_pL9DVjgVHDdYirtrCekUHOYoa1CMR66nxep5q5cBQ4y4u2kIgSvChCTc9pmLLNoIem-ruCecAJYgI9Ks7pTnW1gkOKs0x3YpiLpzplVHAkkHztaXiJdtpBcY1OXyo6jTQCa3Lk2Q3va1dPkh_d--GU2M5flgd8xNBPYw4vxyt0mP59XZlHMpztZt0soSgObf7G3GXArreF_6tpbFsS3z2t5zkEiHuWJXpzcYr5zWTRPDEHsejeBSG8EgpLDce2380ROQ

অ্যাক্সেস টোকেন অনুরোধ করা

স্বাক্ষরিত জেডাব্লুটি তৈরি করার পরে, কোনও অ্যাপ্লিকেশন এটিকে অ্যাক্সেস টোকেনের অনুরোধ করতে ব্যবহার করতে পারে। এই অ্যাক্সেস টোকেন অনুরোধটি একটি HTTPS POST অনুরোধ, এবং বডি ইউআরএল এনকোড করা আছে। URL টি নীচে দেখানো হয়েছে:

https://oauth2.googleapis.com/token

নিম্নলিখিত পরামিতিগুলি HTTPS POST অনুরোধে প্রয়োজনীয়:

নাম বর্ণনা
grant_type নিম্নলিখিত স্ট্রিংটি ব্যবহার করুন, ইউআরএল-এনকোডেড হিসাবে প্রয়োজনীয়: urn:ietf:params:oauth:grant-type:jwt-bearer
assertion JWT সহ স্বাক্ষর।

নীচে একটি অ্যাক্সেস টোকেন অনুরোধে ব্যবহৃত HTTPS POST অনুরোধের একটি কাঁচা ডাম্প রয়েছে:

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

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI3NjEzMjY3OTgwNjktcjVtbGpsbG4xcmQ0bHJiaGc3NWVmZ2lncDM2bTc4ajVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvcHJlZGljdGlvbiIsImF1ZCI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbiIsImV4cCI6MTMyODU3MzM4MSwiaWF0IjoxMzI4NTY5NzgxfQ.ixOUGehweEVX_UKXv5BbbwVEdcz6AYS-6uQV6fGorGKrHf3LIJnyREw9evE-gs2bmMaQI5_UbabvI4k-mQE4kBqtmSpTzxYBL1TCd7Kv5nTZoUC1CmwmWCFqT9RE6D7XSgPUh_jF1qskLa2w0rxMSjwruNKbysgRNctZPln7cqQ

নীচে একই অনুরোধ, curl ব্যবহার করে:

curl -d 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI3NjEzMjY3OTgwNjktcjVtbGpsbG4xcmQ0bHJiaGc3NWVmZ2lncDM2bTc4ajVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvcHJlZGljdGlvbiIsImF1ZCI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbiIsImV4cCI6MTMyODU3MzM4MSwiaWF0IjoxMzI4NTY5NzgxfQ.RZVpzWygMLuL-n3GwjW1_yhQhrqDacyvaXkuf8HcJl8EtXYjGjMaW5oiM5cgAaIorrqgYlp4DPF_GuncFqg9uDZrx7pMmCZ_yHfxhSCXru3gbXrZvAIicNQZMFxrEEn4REVuq7DjkTMyCMGCY1dpMa8aWfTQFt3Eh7smLchaZsU
' https://oauth2.googleapis.com/token

প্রতিক্রিয়া সামলানো

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

{
  "access_token": "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M",
  "scope": "https://www.googleapis.com/auth/prediction"
  "token_type": "Bearer",
  "expires_in": 3600
}

এক্সেস টোকেনগুলি expires_in উইন্ডোর মেয়াদ শেষ হওয়ার সময়কালের মান দ্বারা পুনরায় ব্যবহার করা যেতে পারে।

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

জাভা

নিম্নলিখিত পদক্ষেপগুলি সম্পন্ন করে গুগল এপিআইগুলিতে কল করতে GoogleCredential অবজেক্টটি ব্যবহার করুন:

  1. আপনি যে GoogleCredential অবজেক্ট ব্যবহার করে কল করতে চান সেই API এর জন্য একটি পরিষেবা অবজেক্ট তৈরি করুন। উদাহরণস্বরূপ:
    SQLAdmin sqladmin =
        new SQLAdmin.Builder(httpTransport, JSON_FACTORY, credential).build();
  2. সার্ভিস অবজেক্টের সরবরাহ করা ইন্টারফেস ব্যবহার করে API পরিষেবাতে অনুরোধ করুন। উদাহরণস্বরূপ, উত্তেজনাপূর্ণ-উদাহরণ-123 প্রকল্পে ক্লাউড এসকিউএল ডেটাবেসগুলির উদাহরণগুলির তালিকা করতে:
    SQLAdmin.Instances.List instances =
        sqladmin.instances().list("exciting-example-123").execute();

পাইথন

নিম্নলিখিত পদক্ষেপগুলি সমাপ্ত করে গুগল এপিআইগুলিতে কল করতে অনুমোদিত Credentials ব্যবহার করুন:

  1. আপনি যে API টি কল করতে চান তার জন্য একটি পরিষেবা অবজেক্ট তৈরি করুন। আপনি API এর অনুমোদিত নাম এবং সংস্করণ এবং অনুমোদিত Credentials বস্তুর সাথে build ফাংশনটিতে কল করে aa পরিষেবা অবজেক্ট build । উদাহরণস্বরূপ, ক্লাউড এসকিউএল প্রশাসনের এপিআই এর সংস্করণ 1 বিটা 3 কল করতে:
    import googleapiclient.discovery
    
    sqladmin = googleapiclient.discovery.build('sqladmin', 'v1beta3', credentials=credentials)
  2. সার্ভিস অবজেক্টের সরবরাহ করা ইন্টারফেস ব্যবহার করে API পরিষেবাতে অনুরোধ করুন। উদাহরণস্বরূপ, উত্তেজনাপূর্ণ-উদাহরণ -123 প্রকল্পে ক্লাউড এসকিউএল ডাটাবেসের উদাহরণগুলি তালিকাভুক্ত করতে:
    response = sqladmin.instances().list(project='exciting-example-123').execute()

HTTP / REST

আপনার অ্যাপ্লিকেশন কোনও অ্যাক্সেস টোকেন পাওয়ার পরে, আপনি যদি কোনও এপিআই দ্বারা প্রয়োজনীয় অ্যাক্সেসের সুযোগ (গুলি) মঞ্জুর করা হয়ে থাকে তবে আপনি প্রদত্ত পরিষেবা অ্যাকাউন্ট বা ব্যবহারকারীর অ্যাকাউন্টের পক্ষ থেকে একটি গুগল এপিআইতে কল করতে টোকেনটি ব্যবহার করতে পারেন। এই কাজের জন্য, অ্যাক্সেস 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

অ্যাক্সেস টোকেনগুলির মেয়াদ শেষ হলে

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

JWT ত্রুটি কোডগুলি

error ক্ষেত্র error_description ক্ষেত্র অর্থ কীভাবে সমাধান করবেন
unauthorized_client Unauthorized client or scope in request. আপনি যদি ডোমেন-প্রশস্ত প্রতিনিধি ব্যবহার করার চেষ্টা করছেন তবে ব্যবহারকারীর ডোমেনের অ্যাডমিন কনসোলে পরিষেবা অ্যাকাউন্ট অনুমোদিত নয়।

sub দাবির (ক্ষেত্র) ব্যবহারকারীর জন্য প্রশাসনের কনসোলের ডোমেন-প্রশস্ত প্রতিনিধি পৃষ্ঠায় পরিষেবা অ্যাকাউন্ট অনুমোদিত কিনা তা নিশ্চিত করুন।

এটি সাধারণত কয়েক মিনিট সময় নেয়, আপনার Google অ্যাকাউন্টে সমস্ত ব্যবহারকারীর কাছে প্রচারের অনুমোদন পেতে 24 ঘন্টা সময় নিতে পারে।

unauthorized_client Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested. অ্যাডমিন কনসোলে ক্লায়েন্ট আইডি (সংখ্যাসূচক) এর পরিবর্তে ক্লায়েন্ট ইমেল ঠিকানা ব্যবহার করে একটি পরিষেবা অ্যাকাউন্ট অনুমোদিত হয়েছিল। অ্যাডমিন কনসোলে ডোমেন-প্রশস্ত প্রতিনিধি পৃষ্ঠায়, ক্লায়েন্টটি সরিয়ে ফেলুন এবং সংখ্যাসূচক আইডিতে এটি পুনরায় যুক্ত করুন।
access_denied (কোনও মান) আপনি যদি ডোমেন-প্রশস্ত প্রতিনিধি ব্যবহার করছেন, তবে এক বা একাধিক অনুরোধিত স্কোপগুলি অ্যাডমিন কনসোলে অনুমোদিত নয়।

sub দাবির (ক্ষেত্র) ব্যবহারকারীর জন্য অ্যাডমিন কনসোলের ডোমেন-প্রশস্ত প্রতিনিধি পৃষ্ঠায় পরিষেবা অ্যাকাউন্ট অনুমোদিত কিনা তা নিশ্চিত করুন এবং এতে আপনি আপনার জেডাব্লুটিটির scope দাবীতে অনুরোধ করছেন এমন সমস্ত স্কোপও অন্তর্ভুক্ত রয়েছে।

এটি সাধারণত কয়েক মিনিট সময় নেয়, আপনার Google অ্যাকাউন্টে সমস্ত ব্যবহারকারীর কাছে প্রচারের অনুমোদন পেতে 24 ঘন্টা সময় নিতে পারে।

invalid_grant Not a valid email. ব্যবহারকারীর অস্তিত্ব নেই। sub দাবির (ক্ষেত্র) ইমেল ঠিকানাটি সঠিক কিনা তা পরীক্ষা করে দেখুন।
invalid_grant

Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your 'iat' and 'exp' values and use a clock with skew to account for clock differences between systems.

সাধারণত, এর অর্থ স্থানীয় সিস্টেমের সময়টি সঠিক নয়। এছাড়া যদি ঘটতে পারে exp মান থেকে ভবিষ্যতে চেয়ে বেশি 65 মিনিট iat মান, বা exp মানের চেয়ে কম iat মান।

জেডাব্লুটিটি তৈরি করা হয়েছে এমন সিস্টেমে থাকা ঘড়িটি সঠিক কিনা তা নিশ্চিত করুন। প্রয়োজনে গুগল এনটিপির সাথে আপনার সময় সিঙ্ক করুন।

invalid_grant Invalid JWT Signature.

জেডাব্লুটি দৃser় ক্লায়েন্টের ইমেল দ্বারা চিহ্নিত পরিষেবা অ্যাকাউন্টের সাথে সম্পর্কিত নয় এমন একটি প্রাইভেট কী দিয়ে স্বাক্ষরিত হয়েছে।

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

জেডাব্লুটি দাবি সেটটি ডিকোড করুন এবং দাবিটি স্বাক্ষর করা কীটি পরিষেবার অ্যাকাউন্টের সাথে সম্পর্কিত যাচাই করুন।

জেডাব্লুটিটি সঠিকভাবে উত্পন্ন হয়েছে তা নিশ্চিত করতে একটি গুগল সরবরাহিত ওআউথ লাইব্রেরি ব্যবহার করার চেষ্টা করুন।

invalid_scope Invalid OAuth scope or ID token audience provided. কোনও স্কোপের অনুরোধ করা হয়নি (স্কোপের খালি তালিকা), অথবা অনুরোধ করা স্কোপের একটি উপস্থিত নেই (অর্থাত অবৈধ)।

নিশ্চিত করুন যে জেডাব্লুটিটির scope দাবী (ক্ষেত্র) জনবহুল, এবং এতে কোনও ত্রুটি বা টাইপ নেই তা নিশ্চিত করার জন্য আপনি যে API গুলি ব্যবহার করতে চান তার নথিভুক্ত স্কোপের সাথে তুলনা করুন compare

নোট করুন যে scope দাবিতে scope তালিকাটি কমা দিয়ে নয়, ফাঁক দিয়ে আলাদা করা দরকার।

disabled_client The OAuth client was disabled. জেডব্লিউটি দৃser় স্বাক্ষর করতে ব্যবহৃত কীটি অক্ষম।

Google API Console এ যান এবং আইএএম এবং প্রশাসক> পরিষেবা অ্যাকাউন্টের অধীনে, পরিষেবা অ্যাকাউন্টটি সক্ষম করুন যা স্বাক্ষর স্বাক্ষর করতে ব্যবহৃত "কী আইডি" ধারণ করে।

সংযোজন: OAuth ছাড়াই পরিষেবা অ্যাকাউন্ট অনুমোদন

কিছু গুগল এপিআই এর সাহায্যে আপনি ওআউথ ২.০ অ্যাক্সেস টোকেনের পরিবর্তে স্বাক্ষরিত জেডাব্লুটিটি সরাসরি বাহক টোকেন হিসাবে অনুমোদিত API কল করতে পারেন। যখন এটি সম্ভব হয়, আপনি কোনও API কল করার আগে গুগলের অনুমোদনের সার্ভারে একটি নেটওয়ার্ক অনুরোধ করা এড়াতে পারেন।

আপনি যে API টি কল করতে চান তার যদি Google APIs GitHub সংগ্রহস্থলে কোনও পরিষেবা সংজ্ঞা প্রকাশিত হয় তবে আপনি অ্যাক্সেস টোকেনের পরিবর্তে JWT ব্যবহার করে অনুমোদিত API কল করতে পারেন। তাই না:

  1. উপরে বর্ণিত হিসাবে একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন । আপনি অ্যাকাউন্টটি তৈরি করার সময় আপনি যে JSON ফাইলটি পেয়েছেন তা নিশ্চিত করে রাখুন।
  2. যে কোনও স্ট্যান্ডার্ড জেডব্লিউটি লাইব্রেরি যেমন jwt.io এ পাওয়া যায়, ব্যবহার করে নীচের উদাহরণের মতো একটি শিরোনাম এবং পে-লোড দিয়ে JWT তৈরি করুন:
    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "abcdef1234567890"
    }
    .
    {
      "iss": "123456-compute@developer.gserviceaccount.com",
      "sub": "123456-compute@developer.gserviceaccount.com",
      "aud": "https://firestore.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600
    }
    • শিরোনামে kid ক্ষেত্রের জন্য, আপনার পরিষেবা অ্যাকাউন্টের ব্যক্তিগত কী আইডি উল্লেখ করুন। আপনি এই মানটি আপনার পরিষেবা অ্যাকাউন্ট JSON ফাইলের private_key_id ক্ষেত্রে পাবেন।
    • iss এবং sub ক্ষেত্রগুলির জন্য, আপনার পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানা নির্দিষ্ট করুন। আপনি এই মানটি আপনার পরিষেবা অ্যাকাউন্ট JSON ফাইলের client_email ক্ষেত্রে খুঁজে পাবেন।
    • aud ক্ষেত্রের জন্য, API এর শেষ aud নির্দিষ্ট করুন। উদাহরণস্বরূপ: https:// SERVICE .googleapis.com/
    • জন্য iat ক্ষেত্র, বর্তমান ইউনিক্স সময় নির্দিষ্ট, এবং exp ক্ষেত্র, ঠিক 3600 সেকেন্ড পরে যখন JWT মেয়াদ শেষ হবে সময় উল্লেখ করুন।

আপনার পরিষেবা অ্যাকাউন্ট JSON ফাইলে পাওয়া ব্যক্তিগত কী ব্যবহার করে JSW-256 দিয়ে JWT তে স্বাক্ষর করুন।

উদাহরণ স্বরূপ:

জাভা

গুগল-এপি-জাভা-ক্লায়েন্ট এবং জাভা-জ্বেটি ব্যবহার করে :

GoogleCredential credential =
        GoogleCredential.fromStream(new FileInputStream("MyProject-1234.json"));
PrivateKey privateKey = credential.getServiceAccountPrivateKey();
String privateKeyId = credential.getServiceAccountPrivateKeyId();

long now = System.currentTimeMillis();

try {
    Algorithm algorithm = Algorithm.RSA256(null, privateKey);
    String signedJwt = JWT.create()
        .withKeyId(privateKeyId)
        .withIssuer("123456-compute@developer.gserviceaccount.com")
        .withSubject("123456-compute@developer.gserviceaccount.com")
        .withAudience("https://firestore.googleapis.com/")
        .withIssuedAt(new Date(now))
        .withExpiresAt(new Date(now + 3600 * 1000L))
        .sign(algorithm);
} catch ...

পাইথন

পাইজেডব্লিউটি ব্যবহার করে:

iat = time.time()
exp = iat + 3600
payload = {'iss': '123456-compute@developer.gserviceaccount.com',
           'sub': '123456-compute@developer.gserviceaccount.com',
           'aud': 'https://firestore.googleapis.com/',
           'iat': iat,
           'exp': exp}
additional_headers = {'kid': PRIVATE_KEY_ID_FROM_JSON}
signed_jwt = jwt.encode(payload, PRIVATE_KEY_FROM_JSON, headers=additional_headers,
                       algorithm='RS256')
  1. বাহক টোকেন হিসাবে স্বাক্ষরিত JWT ব্যবহার করে এপিআই কল করুন:
    GET /v1/projects/abc/databases/123/indexes HTTP/1.1
    Authorization: Bearer SIGNED_JWT
    Host: firestore.googleapis.com