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

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

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

অনুরোধ অনুমোদন করতে আপনার অ্যাপ্লিকেশন অবশ্যই OAuth 2.0 ব্যবহার করবে। অন্য কোন অনুমোদন প্রোটোকল সমর্থিত হয় না. যদি আপনার অ্যাপ্লিকেশন Google এর সাথে সাইন ইন ব্যবহার করে, তবে অনুমোদনের কিছু দিক আপনার জন্য পরিচালনা করা হয়।

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

Manufacturer Center API-এর সমস্ত অনুরোধ একজন প্রমাণীকৃত ব্যবহারকারীর দ্বারা অনুমোদিত হতে হবে।

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

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

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

Manufacturer Center API-এর জন্য OAuth 2.0 স্কোপের তথ্য এখানে রয়েছে:

ব্যাপ্তি অর্থ
https://www.googleapis.com/auth/manufacturercenter পড়া/লেখার অ্যাক্সেস।

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

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

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

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

জাভা

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

আমাদের সামগ্রী API জাভা নমুনা কোড থেকে উদাহরণ স্নিপেট:

    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.");
    }