כל בקשה שהאפליקציה שולחת ל-Manufacturer Center API צריכה לכלול אסימון הרשאה. אסימון ההרשאה גם מזהה את האפליקציה שלכם ב-Google.
הסבר על פרוטוקולים של הרשאות
כדי לאשר בקשות, האפליקציה חייבת להשתמש בפרוטוקול OAuth 2.0. אין תמיכה בפרוטוקולים אחרים של הרשאות. אם באפליקציה נעשה שימוש בכניסה באמצעות חשבון Google, היבטים מסוימים של ההרשאות מטפלים בשבילכם.
הרשאת בקשות עם פרוטוקול OAuth 2.0
כל הבקשות ל-Manufacturer Center API חייבות לקבל הרשאה ממשתמש מאומת.
הפרטים או ה"זרימה" של תהליך ההרשאה עם OAuth 2.0 עשויים להשתנות מעט, בהתאם לסוג האפליקציה שאתם מפתחים. התהליך הכללי הבא חל על כל סוגי האפליקציות:
- כשיוצרים את האפליקציה, רושמים אותה באמצעות Google API Console. לאחר הרישום, Google מספקת נתונים שיהיו דרושים לכם מאוחר יותר, כמו מזהה לקוח וסוד לקוח.
- מפעילים את Manufacturer Center API ב-Google API Console. (אם ה-API לא מופיע ב-API Console, דלגו על השלב הזה).
- כשהאפליקציה צריכה גישה לנתונים של משתמשים, היא מעבירה ל-Google בקשת גישה בהיקף ספציפי.
- Google מציגה למשתמש מסך הסכמה ומבקשת לאשר לאפליקציה לשלוח בקשה לחלק מהנתונים שלו.
- אם המשתמש מסכים, האפליקציה מקבלת מ-Google אסימון גישה לטווח קצר.
- האפליקציה מבקשת את נתוני המשתמש ומצרפת לבקשה את אסימון הגישה.
- אם Google תקבע שהבקשה והאסימון תקפים, היא תחזיר את הנתונים המבוקשים.
חלק מתהליכי העבודה כוללים שלבים נוספים, כמו שימוש באסימוני רענון כדי לקבל אסימוני גישה חדשים. למידע מפורט על תהליכי העבודה לסוגים שונים של אפליקציות, ניתן לעיין בתיעוד של OAuth 2.0 של Google.
הפרטים לגבי היקף ההרשאות OAuth 2.0 ב-Manufacturer Center API:
היקף | משמעות |
---|---|
https://www.googleapis.com/auth/manufacturercenter |
גישת קריאה/כתיבה. |
כדי לבקש גישה באמצעות פרוטוקול OAuth 2.0, האפליקציה שלכם זקוקה למידע על ההיקף ולמידע ש-Google מספקת בזמן רישום האפליקציה (כמו מזהה לקוח וסוד לקוח).
טיפ: ספריות הלקוח של Google APIs יכולות לטפל בחלק מתהליך ההרשאה עבורכם. הם זמינים למגוון שפות תכנות. תוכלו למצוא פרטים נוספים בדף שמכיל ספריות ודוגמאות.
דוגמה להרשאה
הקוד הבא מדגים איך להגדיר את הלקוח ולאשר בקשות שמשתמשות ב-OAuth 2.0 לאפליקציות מותקנות. שפות אחרות הן זמינים בדף דוגמאות וספריות.
Java
זהו התהליך של קוד ההרשאה של שורת הפקודה שמתואר במאמר שימוש ב-OAuth 2.0 עבור 'מתקינים' אפליקציות.
קטע קוד לדוגמה מתוך דוגמת Java של Content API code:
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.");
}