هر درخواستی که برنامه شما به API مرکز تولیدکنندگان ارسال میکند، باید شامل یک توکن مجوز باشد. این توکن همچنین برنامه شما را به گوگل معرفی میکند.
درباره پروتکلهای مجوزدهی
برنامه شما باید از OAuth 2.0 برای تأیید درخواستها استفاده کند. هیچ پروتکل تأیید دیگری پشتیبانی نمیشود. اگر برنامه شما از ورود با گوگل استفاده میکند، برخی از جنبههای تأیید برای شما انجام میشود.
تأیید درخواستها با OAuth 2.0
تمام درخواستها به API مرکز تولیدکنندگان باید توسط یک کاربر احراز هویت شده تأیید شوند.
جزئیات فرآیند مجوزدهی یا «جریان» برای OAuth 2.0 بسته به نوع برنامهای که مینویسید تا حدودی متفاوت است. فرآیند کلی زیر برای همه انواع برنامه اعمال میشود:
- وقتی برنامه خود را ایجاد میکنید، آن را با استفاده از کنسول API گوگل ثبت میکنید. سپس گوگل اطلاعاتی را که بعداً به آنها نیاز خواهید داشت، مانند شناسه کلاینت و رمز کلاینت، در اختیار شما قرار میدهد.
- API مرکز تولیدکننده را در کنسول API گوگل فعال کنید. (اگر API در کنسول API فهرست نشده است، از این مرحله صرف نظر کنید.)
- وقتی برنامه شما نیاز به دسترسی به دادههای کاربر دارد، از گوگل درخواست محدوده خاصی از دسترسی را میکند.
- گوگل یک صفحه رضایتنامه به کاربر نمایش میدهد و از او میخواهد که به برنامه شما اجازه دهد تا برخی از دادههایش را درخواست کند.
- اگر کاربر تأیید کند، گوگل یک توکن دسترسی کوتاهمدت به برنامه شما میدهد.
- برنامه شما دادههای کاربر را درخواست میکند و توکن دسترسی را به درخواست پیوست میکند.
- اگر گوگل تشخیص دهد که درخواست شما و توکن معتبر هستند، دادههای درخواستی را برمیگرداند.
برخی از جریانها شامل مراحل اضافی مانند استفاده از توکنهای تازهسازی برای به دست آوردن توکنهای دسترسی جدید هستند. برای اطلاعات دقیق در مورد جریانها برای انواع مختلف برنامهها، به مستندات OAuth 2.0 گوگل مراجعه کنید.
اطلاعات مربوط به محدودهی OAuth 2.0 برای رابط برنامهنویسی کاربردی مرکز تولیدکننده (Feature Center API) به شرح زیر است:
| محدوده | معنی |
|---|---|
https://www.googleapis.com/auth/manufacturercenter | دسترسی خواندن/نوشتن. |
برای درخواست دسترسی با استفاده از OAuth 2.0، برنامه شما به اطلاعات دامنه و همچنین اطلاعاتی که گوگل هنگام ثبت برنامه شما ارائه میدهد (مانند شناسه کلاینت و رمز کلاینت) نیاز دارد.
نکته: کتابخانههای کلاینت APIهای گوگل میتوانند بخشی از فرآیند مجوزدهی را برای شما انجام دهند. این کتابخانهها برای زبانهای برنامهنویسی مختلفی در دسترس هستند؛ برای جزئیات بیشتر ، صفحه مربوط به کتابخانهها و نمونهها را بررسی کنید.
مثال مجوز
کد زیر نحوه پیکربندی کلاینت و تأیید درخواستها با استفاده از 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.");
}