Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Mọi yêu cầu mà ứng dụng của bạn gửi tới API Manufacturer Center đều phải bao gồm mã thông báo uỷ quyền. Mã này cũng giúp Google xác định ứng dụng của bạn.
Giới thiệu về giao thức cấp phép
Ứng dụng của bạn phải sử dụng OAuth 2.0 để cấp phép các yêu cầu. Chúng tôi không hỗ trợ giao thức cấp phép nào khác. Nếu ứng dụng của bạn sử dụng chức năng Đăng nhập bằng Google, thì Google sẽ giúp bạn xử lý một số bước trong quá trình cấp phép.
Cấp phép cho các yêu cầu bằng OAuth 2.0
Tất cả các yêu cầu gửi tới Manufacturer Center API phải do người dùng đã xác thực cấp phép.
Các chi tiết của quy trình cấp phép đối với OAuth 2.0 sẽ khác nhau đôi chút tuỳ thuộc vào loại ứng dụng bạn đang viết. Quy trình chung sau đây áp dụng cho tất cả các loại ứng dụng:
Khi tạo ứng dụng của mình, bạn sẽ đăng ký ứng dụng bằng Google API Console. Sau đó, Google cung cấp thông tin bạn sẽ cần sau này, chẳng hạn như mã ứng dụng khách và mật khẩu ứng dụng khách.
Kích hoạt Manufacturer Center API trong Google API Console. (Nếu API không được liệt kê trong API Console, thì hãy bỏ qua bước này.)
Khi cần quyền truy cập vào dữ liệu người dùng, ứng dụng sẽ yêu cầu Google cung cấp phạm vi truy cập cụ thể.
Google hiển thị màn hình yêu cầu sự đồng ý cho người dùng để hỏi xem họ có cho phép ứng dụng của bạn yêu cầu một số dữ liệu của họ hay không.
Nếu người dùng đồng ý, thì Google sẽ cấp cho ứng dụng của bạn một mã truy cập ngắn hạn.
Sau đó, ứng dụng yêu cầu dữ liệu người dùng và đính kèm mã truy cập trong yêu cầu.
Nếu xác định rằng yêu cầu của bạn và mã này là hợp lệ, Google sẽ trả về dữ liệu mà ứng dụng yêu cầu.
Một số quy trình cấp phép có các bước bổ sung khác, chẳng hạn như sử dụng mã làm mới để lấy mã truy cập mới. Để biết thông tin chi tiết về quy trình cho các loại ứng dụng khác nhau, hãy xem tài liệu về OAuth 2.0 của Google.
Dưới đây là thông tin về phạm vi của OAuth 2.0 cho API Manufacturer Center:
Để yêu cầu quyền truy cập bằng OAuth 2.0, ứng dụng của bạn cần thông tin về mức truy cập, cũng như thông tin mà Google cung cấp khi bạn đăng ký ứng dụng của mình (chẳng hạn như mã ứng dụng khách và mật khẩu ứng dụng khách).
Mẹo: Thư viện ứng dụng API Google có thể xử lý một số bước trong quy trình cấp phép cho bạn. Thư viện này được cung cấp bằng nhiều ngôn ngữ lập trình. Hãy xem trang về các thư viện và mẫu để biết thêm chi tiết.
Ví dụ về việc uỷ quyền
Mã sau đây minh hoạ cách định cấu hình ứng dụng của bạn và cấp quyền
cho các yêu cầu đã cài đặt bằng OAuth 2.0. Các ngôn ngữ khác là
có trên trang Mẫu và thư viện của chúng tôi.
publicstaticvoidmain(String[]args){try{httpTransport=GoogleNetHttpTransport.newTrustedTransport();dataStoreFactory=newFileDataStoreFactory(DATA_STORE_DIR);jsonFactory=JacksonFactory.getDefaultInstance();scopes="https://www.googleapis.com/auth/manufacturercenter";// load configurationFileconfigPath=newFile(basePath,"manufacturers");FileconfigFile=newFile(configPath,manufacturers-info.json);ManufacturersConfigconfig=newJacksonFactory().fromInputStream(inputStream,ManufacturersConfig.class);config.setPath(configPath);// Get authorization tokenCredentialcredential=authenticate(httpTransport,dataStoreFactory,config,jsonFactory,scopes);// ...}}privatestaticCredentialauthenticate(httpTransport,dataStoreFactory,config,jsonFactory,scopes)throwsException{try{Credentialcredential=GoogleCredential.getApplicationDefault().createScoped(scopes);System.out.println("Loaded the Application Default Credentials.");returncredential;}catch(IOExceptione){// No need to do anything, we'll fall back on other credentials.}if(config.getPath()==null){thrownewIllegalArgumentException("Must use Application Default Credentials with no configuration directory.");}FileclientSecretsFile=newFile(config.getPath(),"client-secrets.json");if(clientSecretsFile.exists()){System.out.println("Loading OAuth2 client credentials.");try(InputStreaminputStream=newFileInputStream(clientSecretsFile)){GoogleClientSecretsclientSecrets=GoogleClientSecrets.load(jsonFactory,newInputStreamReader(inputStream));// set up authorization code flowGoogleAuthorizationCodeFlowflow=newGoogleAuthorizationCodeFlow.Builder(httpTransport,jsonFactory,clientSecrets,scopes).setDataStoreFactory(dataStoreFactory).build();// authorizeStringuserID=ConfigDataStoreFactory.UNUSED_ID;CredentialstoredCredential=flow.loadCredential(userID);if(storedCredential!=null){System.out.printf("Retrieved stored credential for %s from cache.%n",userID);returnstoredCredential;}LocalServerReceiverreceiver=newLocalServerReceiver.Builder().setHost("localhost").setPort(9999).build();Credentialcredential=newAuthorizationCodeInstalledApp(flow,receiver).authorize(userID);System.out.printf("Retrieved credential for %s from web.%n",userID);returncredential;}catch(IOExceptione){thrownewIOException("Could not retrieve OAuth2 client credentials from the file "+clientSecretsFile.getCanonicalPath());}}thrownewIOException("No authentication credentials found. Checked the Google Application"+"Default Credentials and the paths "+clientSecretsFile.getCanonicalPath()+". Please read the accompanying README.");}
[null,null,["Cập nhật lần gần đây nhất: 2025-08-31 UTC."],[[["\u003cp\u003eThe Manufacturer Center API requires OAuth 2.0 for authorization to access user data.\u003c/p\u003e\n"],["\u003cp\u003eApplications need to be registered with Google API Console to obtain credentials like client ID and client secret.\u003c/p\u003e\n"],["\u003cp\u003eAn authorization token, obtained through user consent, must be included in every API request.\u003c/p\u003e\n"],["\u003cp\u003eGoogle provides client libraries to simplify the authorization process for different programming languages.\u003c/p\u003e\n"],["\u003cp\u003eThird-party applications should use three-legged OAuth2 flow, while in-house applications can utilize Service Accounts for authentication.\u003c/p\u003e\n"]]],[],null,["# Authorize Requests\n\n| **Note:** This document describes the three-legged OAuth2 flow used to request access to other parties' data. Use this authentication flow if you are developing a third-party application that needs access to your clients' Manufacturer Center accounts. If you are developing an in-house application that will only access your own Manufacturer Center account, see the [Service\n| Accounts](/manufacturers/how-tos/service-accounts) guide instead.\n\nEvery request your application sends to the Manufacturer Center API must include an authorization token. The token also identifies your application to Google.\n\nAbout authorization protocols\n-----------------------------\n\nYour application must use [OAuth 2.0](https://developers.google.com/identity/protocols/OAuth2) to authorize requests. No other authorization protocols are supported. If your application uses [Sign In With Google](https://developers.google.com/identity/gsi/web), some aspects of authorization are handled for you.\n\nAuthorizing requests with OAuth 2.0\n-----------------------------------\n\nAll requests to the Manufacturer Center API must be authorized by an authenticated user.\n\nThe details of the authorization process, or \"flow,\" for OAuth 2.0 vary somewhat depending on what kind of application you're writing. The following general process applies to all application types:\n\n1. When you create your application, you register it using the [Google API Console](https://console.cloud.google.com/). Google then provides information you'll need later, such as a client ID and a client secret.\n2. Activate the Manufacturer Center API in the Google API Console. (If the API isn't listed in the API Console, then skip this step.)\n3. When your application needs access to user data, it asks Google for a particular **scope** of access.\n4. Google displays a **consent screen** to the user, asking them to authorize your application to request some of their data.\n5. If the user approves, then Google gives your application a short-lived **access token**.\n6. Your application requests user data, attaching the access token to the request.\n7. If Google determines that your request and the token are valid, it returns the requested data.\n\nSome flows include additional steps, such as using **refresh tokens** to acquire new access tokens. For detailed information about flows for various types of applications, see Google's [OAuth 2.0 documentation](https://developers.google.com/identity/protocols/OAuth2).\n\nHere's the OAuth 2.0 scope information for the Manufacturer Center API:\n\n| Scope | Meaning |\n|------------------------------------------------------|--------------------|\n| `https://www.googleapis.com/auth/manufacturercenter` | Read/write access. |\n\nTo request access using OAuth 2.0, your application needs the scope information, as well as\ninformation that Google supplies when you register your application (such as the client ID and the\nclient secret).\n\n**Tip:** The Google APIs client libraries can handle some of the authorization process for you. They are available for a variety of programming languages; check the [page with libraries and samples](/manufacturers/libraries) for more details.\n\nAuthorization Example\n---------------------\n\nThe following code demonstrates how to configure your client and authorize\nrequests using OAuth 2.0 for installed applications. Other languages are\navailable at our [Samples and Libraries](/manufacturers/libraries) page. \n\n### Java\n\nThis is the command-line authorization code flow described in [Using OAuth\n2.0 for Installed\nApplications.](https://developers.google.com/accounts/docs/OAuth2InstalledApp)\n\nExample snippet from our Content API [Java sample\ncode:](https://github.com/googleads/googleads-shopping-samples/blob/master/java/src/main/java/shopping/common/Authenticator.java) \n\n public static void main(String[] args) {\n try {\n httpTransport = GoogleNetHttpTransport.newTrustedTransport();\n dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);\n jsonFactory = JacksonFactory.getDefaultInstance();\n scopes = \"https://www.googleapis.com/auth/manufacturercenter\";\n\n // load configuration\n File configPath = new File(basePath, \"manufacturers\");\n File configFile = new File(configPath, manufacturers-info.json);\n ManufacturersConfig config = new JacksonFactory().fromInputStream(inputStream, ManufacturersConfig.class);\n config.setPath(configPath);\n\n // Get authorization token\n Credential credential = authenticate(httpTransport, dataStoreFactory, config, jsonFactory, scopes);\n // ...\n }\n }\n\n private static Credential authenticate(httpTransport, dataStoreFactory, config, jsonFactory, scopes) throws Exception {\n try {\n Credential credential = GoogleCredential.getApplicationDefault().createScoped(scopes);\n System.out.println(\"Loaded the Application Default Credentials.\");\n return credential;\n } catch (IOException e) {\n // No need to do anything, we'll fall back on other credentials.\n }\n if (config.getPath() == null) {\n throw new IllegalArgumentException(\n \"Must use Application Default Credentials with no configuration directory.\");\n }\n File clientSecretsFile = new File(config.getPath(), \"client-secrets.json\");\n if (clientSecretsFile.exists()) {\n System.out.println(\"Loading OAuth2 client credentials.\");\n try (InputStream inputStream = new FileInputStream(clientSecretsFile)) {\n GoogleClientSecrets clientSecrets =\n GoogleClientSecrets.load(jsonFactory, new InputStreamReader(inputStream));\n // set up authorization code flow\n GoogleAuthorizationCodeFlow flow =\n new GoogleAuthorizationCodeFlow.Builder(\n httpTransport, jsonFactory, clientSecrets, scopes)\n .setDataStoreFactory(dataStoreFactory)\n .build();\n // authorize\n String userID = ConfigDataStoreFactory.UNUSED_ID;\n Credential storedCredential = flow.loadCredential(userID);\n if (storedCredential != null) {\n System.out.printf(\"Retrieved stored credential for %s from cache.%n\", userID);\n return storedCredential;\n }\n LocalServerReceiver receiver =\n new LocalServerReceiver.Builder().setHost(\"localhost\").setPort(9999).build();\n Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize(userID);\n System.out.printf(\"Retrieved credential for %s from web.%n\", userID);\n return credential;\n } catch (IOException e) {\n throw new IOException(\n \"Could not retrieve OAuth2 client credentials from the file \"\n\n + clientSecretsFile.getCanonicalPath());\n }\n }\n throw new IOException(\n \"No authentication credentials found. Checked the Google Application\"\n + \"Default Credentials and the paths \"\n + clientSecretsFile.getCanonicalPath()\n + \". Please read the accompanying README.\");\n }"]]