অনুরোধ অনুমোদন

আপনার অ্যাপ্লিকেশন থেকে ম্যানুফ্যাকচারার সেন্টার এপিআই-তে পাঠানো প্রতিটি অনুরোধে অবশ্যই একটি অথরাইজেশন টোকেন অন্তর্ভুক্ত থাকতে হবে। এই টোকেনটি গুগলের কাছে আপনার অ্যাপ্লিকেশনকে শনাক্ত করতেও সাহায্য করে।

অনুমোদন প্রোটোকল সম্পর্কে

অনুরোধ অনুমোদনের জন্য আপনার অ্যাপ্লিকেশনকে অবশ্যই OAuth 2.0 ব্যবহার করতে হবে। অন্য কোনো অনুমোদন প্রোটোকল সমর্থিত নয়। যদি আপনার অ্যাপ্লিকেশন ‘Sign In With Google’ ব্যবহার করে, তবে অনুমোদনের কিছু দিক আপনার জন্য স্বয়ংক্রিয়ভাবে পরিচালিত হয়।

OAuth 2.0 দিয়ে অনুরোধ অনুমোদন করা হচ্ছে

ম্যানুফ্যাকচারার সেন্টার এপিআই-তে করা সকল অনুরোধ অবশ্যই একজন প্রমাণীকৃত ব্যবহারকারী দ্বারা অনুমোদিত হতে হবে।

আপনি কী ধরনের অ্যাপ্লিকেশন তৈরি করছেন তার উপর নির্ভর করে OAuth 2.0-এর অনুমোদন প্রক্রিয়া বা 'ফ্লো'-এর বিবরণ কিছুটা ভিন্ন হয়। নিম্নলিখিত সাধারণ প্রক্রিয়াটি সকল প্রকার অ্যাপ্লিকেশনের জন্য প্রযোজ্য:

  1. যখন আপনি আপনার অ্যাপ্লিকেশন তৈরি করেন, তখন আপনি গুগল এপিআই কনসোল ব্যবহার করে এটি নিবন্ধন করেন। এরপর গুগল আপনাকে এমন কিছু তথ্য সরবরাহ করে যা আপনার পরবর্তীতে প্রয়োজন হবে, যেমন একটি ক্লায়েন্ট আইডি এবং একটি ক্লায়েন্ট সিক্রেট।
  2. Google API Console-এ Manufacturer Center API-টি সক্রিয় করুন। (যদি API-টি API Console-এ তালিকাভুক্ত না থাকে, তাহলে এই ধাপটি এড়িয়ে যান।)
  3. যখন আপনার অ্যাপ্লিকেশনের ব্যবহারকারীর ডেটাতে অ্যাক্সেসের প্রয়োজন হয়, তখন এটি গুগলের কাছে একটি নির্দিষ্ট পরিসরের অ্যাক্সেসের জন্য অনুরোধ করে।
  4. গুগল ব্যবহারকারীর সামনে একটি সম্মতি স্ক্রিন প্রদর্শন করে, যেখানে আপনার অ্যাপ্লিকেশনকে তাদের কিছু ডেটা অনুরোধ করার অনুমোদন দিতে বলা হয়।
  5. ব্যবহারকারী অনুমোদন করলে, গুগল আপনার অ্যাপ্লিকেশনটিকে একটি স্বল্পস্থায়ী অ্যাক্সেস টোকেন দেয়।
  6. আপনার অ্যাপ্লিকেশনটি অনুরোধের সাথে অ্যাক্সেস টোকেন সংযুক্ত করে ব্যবহারকারীর ডেটার জন্য অনুরোধ করে।
  7. যদি গুগল আপনার অনুরোধ এবং টোকেনটিকে বৈধ বলে মনে করে, তবে এটি অনুরোধ করা ডেটা ফেরত দেয়।

কিছু ফ্লো-তে অতিরিক্ত ধাপ অন্তর্ভুক্ত থাকে, যেমন নতুন অ্যাক্সেস টোকেন পাওয়ার জন্য রিফ্রেশ টোকেন ব্যবহার করা। বিভিন্ন ধরনের অ্যাপ্লিকেশনের ফ্লো সম্পর্কে বিস্তারিত তথ্যের জন্য, গুগলের OAuth 2.0 ডকুমেন্টেশন দেখুন।

ম্যানুফ্যাকচারার সেন্টার এপিআই-এর জন্য OAuth 2.0 স্কোপের তথ্য নিচে দেওয়া হলো:

পরিধি অর্থ
https://www.googleapis.com/auth/manufacturercenter পঠন/লিখন প্রবেশাধিকার।

OAuth 2.0 ব্যবহার করে অ্যাক্সেসের অনুরোধ করতে, আপনার অ্যাপ্লিকেশনের স্কোপ তথ্যের পাশাপাশি, অ্যাপ্লিকেশনটি নিবন্ধন করার সময় Google-এর সরবরাহ করা তথ্যেরও (যেমন ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট) প্রয়োজন হয়।

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

অনুমোদনের উদাহরণ

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

জাভা

এটি হলো "ইনস্টল করা অ্যাপ্লিকেশনগুলির জন্য OAuth 2.0 ব্যবহার" অংশে বর্ণিত কমান্ড-লাইন অনুমোদন কোড প্রবাহ।

আমাদের কন্টেন্ট এপিআই জাভা স্যাম্পল কোড থেকে একটি উদাহরণ অংশ:

    public static void main(String[] args) {
      try {
        httpTransport = GoogleNetHttpTransport.newTrustedTransport();
        dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
        jsonFactory = JacksonFactory.getDefaultInstance();
        scopes =  "https://www.googleapis.com/auth/manufacturercenter";

        // load configuration
        File configPath = new File(basePath, "manufacturers");
        File configFile = new File(configPath, manufacturers-info.json);
        ManufacturersConfig config = new JacksonFactory().fromInputStream(inputStream, ManufacturersConfig.class);
        config.setPath(configPath);

        // Get authorization token
        Credential credential = authenticate(httpTransport, dataStoreFactory, config, jsonFactory, scopes);
        // ...
      }
    }

    private static Credential authenticate(httpTransport, dataStoreFactory, config, jsonFactory, scopes) throws Exception {
      try {
        Credential credential = GoogleCredential.getApplicationDefault().createScoped(scopes);
        System.out.println("Loaded the Application Default Credentials.");
        return credential;
      } catch (IOException e) {
        // No need to do anything, we'll fall back on other credentials.
      }
      if (config.getPath() == null) {
        throw new IllegalArgumentException(
            "Must use Application Default Credentials with no configuration directory.");
      }
      File clientSecretsFile = new File(config.getPath(), "client-secrets.json");
      if (clientSecretsFile.exists()) {
        System.out.println("Loading OAuth2 client credentials.");
        try (InputStream inputStream = new FileInputStream(clientSecretsFile)) {
          GoogleClientSecrets clientSecrets =
              GoogleClientSecrets.load(jsonFactory, new InputStreamReader(inputStream));
          // set up authorization code flow
          GoogleAuthorizationCodeFlow flow =
              new GoogleAuthorizationCodeFlow.Builder(
                      httpTransport, jsonFactory, clientSecrets, scopes)
                  .setDataStoreFactory(dataStoreFactory)
                  .build();
          // authorize
          String userID = ConfigDataStoreFactory.UNUSED_ID;
          Credential storedCredential = flow.loadCredential(userID);
          if (storedCredential != null) {
            System.out.printf("Retrieved stored credential for %s from cache.%n", userID);
            return storedCredential;
          }
          LocalServerReceiver receiver =
              new LocalServerReceiver.Builder().setHost("localhost").setPort(9999).build();
          Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize(userID);
          System.out.printf("Retrieved credential for %s from web.%n", userID);
          return credential;
        } catch (IOException e) {
          throw new IOException(
              "Could not retrieve OAuth2 client credentials from the file "

                                    +   clientSecretsFile.getCanonicalPath());
        }
      }
      throw new IOException(
          "No authentication credentials found. Checked the Google Application"
                            +   "Default Credentials and the paths "
                            +   clientSecretsFile.getCanonicalPath()
                            +   ". Please read the accompanying README.");
    }