OAuth 2.0

এই নথিটি OAuth 2.0, কখন এটি ব্যবহার করতে হবে, কীভাবে ক্লায়েন্ট আইডি অর্জন করতে হবে এবং .NET-এর জন্য Google API ক্লায়েন্ট লাইব্রেরির সাথে কীভাবে এটি ব্যবহার করতে হবে তা বর্ণনা করে।

OAuth 2.0 প্রোটোকল

OAuth 2.0 হল Google API দ্বারা ব্যবহৃত অনুমোদন প্রোটোকল। নিম্নলিখিত লিঙ্কগুলি পড়ে আপনাকে প্রোটোকলের সাথে পরিচিত হওয়া উচিত:

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

আপনি Google API কনসোলে ক্লায়েন্ট আইডি এবং গোপনীয়তা পেতে পারেন। বিভিন্ন ধরনের ক্লায়েন্ট আইডি আছে, তাই আপনার আবেদনের জন্য সঠিক ধরন পেতে ভুলবেন না:

দেখানো প্রতিটি কোড স্নিপেটে (পরিষেবা অ্যাকাউন্টের একটি ছাড়া), আপনাকে ক্লায়েন্ট সিক্রেট ডাউনলোড করতে হবে এবং আপনার প্রোজেক্টে client_secrets.json হিসেবে সংরক্ষণ করতে হবে।

শংসাপত্র

ব্যবহারকারীর শংসাপত্র

UserCredential হল একটি থ্রেড-সেফ হেল্পার ক্লাস যা সুরক্ষিত রিসোর্স অ্যাক্সেস করতে অ্যাক্সেস টোকেন ব্যবহার করে। একটি অ্যাক্সেস টোকেন সাধারণত 1 ঘন্টা পরে মেয়াদ শেষ হয়, তারপরে আপনি এটি ব্যবহার করার চেষ্টা করলে আপনি একটি ত্রুটি পাবেন।

UserCredential এবং AuthorizationCodeFlow স্বয়ংক্রিয়ভাবে টোকেনটিকে "রিফ্রেশ" করার যত্ন নেয়, যার অর্থ একটি নতুন অ্যাক্সেস টোকেন পাওয়া। এটি একটি দীর্ঘস্থায়ী রিফ্রেশ টোকেন ব্যবহার করে করা হয়, যা আপনি অ্যাক্সেস টোকেনের সাথে পাবেন যদি আপনি অনুমোদন কোড প্রবাহের সময় access_type=offline প্যারামিটার ব্যবহার করেন।

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

অ্যাক্সেস এবং রিফ্রেশ টোকেনগুলি বজায় থাকে তা নিশ্চিত করতে, আপনি IDataStore এর নিজস্ব বাস্তবায়ন প্রদান করতে পারেন, অথবা আপনি লাইব্রেরি দ্বারা প্রদত্ত নিম্নলিখিত বাস্তবায়নগুলির মধ্যে একটি ব্যবহার করতে পারেন:

  • .NET-এর জন্য FileDataStore নিশ্চিত করে যে শংসাপত্রটি একটি ফাইলে স্থায়ী হবে।

সার্ভিস অ্যাকাউন্ট ক্রেডেনশিয়াল

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

UserCredential এবং ServiceAccountCredential উভয়ই IConfigurableHttpClientInitializer প্রয়োগ করে যাতে আপনি এইগুলির প্রত্যেকটিকে নিবন্ধন করতে পারেন:

  • একটি অসফল প্রতিক্রিয়া হ্যান্ডলার, তাই এটি টোকেন রিফ্রেশ করবে যদি এটি একটি HTTP 401 স্ট্যাটাস কোড পায়।
  • একটি ইন্টারসেপ্টর, প্রতিটি অনুরোধে Authorization শিরোনাম আটকাতে।

ইনস্টল করা অ্যাপ্লিকেশন

বই API ব্যবহার করে নমুনা কোড:

using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

using Google.Apis.Auth.OAuth2;
using Google.Apis.Books.v1;
using Google.Apis.Books.v1.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;

namespace Books.ListMyLibrary
{
    /// <summary>
    /// Sample which demonstrates how to use the Books API.
    /// https://developers.google.com/books/docs/v1/getting_started
    /// <summary>
    internal class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Console.WriteLine("Books API Sample: List MyLibrary");
            Console.WriteLine("================================");
            try
            {
                new Program().Run().Wait();
            }
            catch (AggregateException ex)
            {
                foreach (var e in ex.InnerExceptions)
                {
                    Console.WriteLine("ERROR: " + e.Message);
                }
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }

        private async Task