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,["最后更新时间 (UTC):2025-08-31。"],[[["\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 }"]]