שליטה בגישה לחשבון שלך

אתם יכולים להשתמש ב-Merchant Accounts API כדי לקבוע למי תהיה גישה לחשבון המוכר שלכם, ומה תהיה רמת הגישה שלו.

User הוא אדם שיש לו גישה לחשבון המוכר שלכם. אפשר להשתמש ב-Merchant Accounts API כדי להציג, להוסיף ולהסיר משתמשים מהחשבון.

הוספת משתמש לחשבון

כדי להוסיף משתמש, צריך לבצע קריאה ל-method‏ accounts.users.create ולציין את רמת הגישה שלו בשדה access_rights של ה-User.

בבקשה לדוגמה הבאה מוסבר איך להוסיף משתמש חדש עם ההרשאות STANDARD ו-PERFORMANCE_REPORTING:

POST https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/users?userId={USER_EMAILID}

{
  "accessRights": [
    "STANDARD",
    "PERFORMANCE_REPORTING"
  ],
  "name": "{NAME}"
}

מחליפים את מה שכתוב בשדות הבאים:

  • {ACCOUNT_ID}: המזהה הייחודי של חשבון Merchant Center.
  • {USER_EMAILID}: כתובת האימייל של המשתמש שרוצים להוסיף.
  • {NAME}: שם המשאב של המשתמש בפורמט accounts/{ACCOUNT_ID}/user/{EMAIL_ADDRESS}.

לאחר השלמת הבקשה, תוחזר התגובה הבאה:

{
  "name": "accounts/{ACCOUNT_ID}/users/{USER_EMAILID}",
  "state": "PENDING",
  "accessRights": [
    "STANDARD",
    "PERFORMANCE_REPORTING"
  ]
}

הבקשה הזו שולחת הזמנה לחשבון Google שמשויך למשתמש החדש, והוא צריך לאשר אותה כדי להיחשב כחבר בחשבון.

בדוגמה הבאה מוסבר איך להשתמש ב-method‏ CreateUserRequest כדי להוסיף משתמש לחשבון.

Java

  public static void createUser(Config config, String email) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    UserServiceSettings userServiceSettings =
        UserServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates parent to identify where to insert the user.
    String parent = getParent(config.getAccountId().toString());

    // Calls the API and catches and prints any network failures/errors.
    try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {

      CreateUserRequest request =
          CreateUserRequest.newBuilder()
              .setParent(parent)
              // This field is the email address of the user.
              .setUserId(email)
              .setUser(
                  User.newBuilder()
                      .addAccessRights(AccessRight.ADMIN)
                      .addAccessRights(AccessRight.PERFORMANCE_REPORTING)
                      .build())
              .build();

      System.out.println("Sending Create User request");
      User response = userServiceClient.createUser(request);
      System.out.println("Inserted User Name below");
      // The last part of the user name will be the email address of the user.
      // Format: `accounts/{account}/user/{user}`
      System.out.println(response.getName());
    } catch (Exception e) {
      System.out.println(e);
    }
  }

הצגת המשתמשים שיש להם גישה לחשבון

כדי להציג את כל המשתמשים שיש להם גישה לחשבון, משתמשים ב-method‏ accounts.users.list.

בדוגמה הבאה מוסבר איך משתמשים ב-method‏ ListUsersRequest כדי להציג את כל המשתמשים בחשבון נתון.

Java

  public static void listUsers(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    UserServiceSettings userServiceSettings =
        UserServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates parent to identify the account from which to list all users.
    String parent = getParent(config.getAccountId().toString());

    // Calls the API and catches and prints any network failures/errors.
    try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {

      // The parent has the format: accounts/{account}
      ListUsersRequest request = ListUsersRequest.newBuilder().setParent(parent).build();

      System.out.println("Sending list users request:");
      ListUsersPagedResponse response = userServiceClient.listUsers(request);

      int count = 0;

      // Iterates over all rows in all pages and prints the user
      // in each row.
      // `response.iterateAll()` automatically uses the `nextPageToken` and recalls the
      // request to fetch all pages of data.
      for (User element : response.iterateAll()) {
        System.out.println(element);
        count++;
      }
      System.out.print("The following count of elements were returned: ");
      System.out.println(count);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

אחזור משתמש יחיד בחשבון נתון

הדוגמה הבאה ממחישה איך אפשר להשתמש בשיטה GetUserRequest כדי לאחזר משתמש בחשבון נתון.

Java

  public static void getUser(Config config, String email) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    UserServiceSettings userServiceSettings =
        UserServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates user name to identify user.
    String name =
        UserName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .setEmail(email)
            .build()
            .toString();

    // Calls the API and catches and prints any network failures/errors.
    try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {

      // The name has the format: accounts/{account}/users/{email}
      GetUserRequest request = GetUserRequest.newBuilder().setName(name).build();

      System.out.println("Sending Get user request:");
      User response = userServiceClient.getUser(request);

      System.out.println("Retrieved User below");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

הסרת משתמש מחשבון נתון

כדי להסיר משתמש מהחשבון, שולחים בקשה באמצעות השיטה accounts.users.delete.

הדוגמה הבאה מראה איך משתמשים ב-method‏ DeleteUserRequest כדי להסיר משתמש מחשבון נתון.

Java

  public static void deleteUser(Config config, String email) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    UserServiceSettings userServiceSettings =
        UserServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates user name to identify the user.
    String name =
        UserName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .setEmail(email)
            .build()
            .toString();

    // Calls the API and catches and prints any network failures/errors.
    try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {
      DeleteUserRequest request = DeleteUserRequest.newBuilder().setName(name).build();

      System.out.println("Sending Delete User request");
      userServiceClient.deleteUser(request); // no response returned on success
      System.out.println("Delete successful.");
    } catch (Exception e) {
      System.out.println(e);
    }
  }

שינוי רמת הגישה של משתמש

כדי לשנות את רמת הגישה של משתמש, צריך להפעיל את השיטה accounts.users.patch עם רמת הגישה החדשה.

בדוגמה הבאה מוסבר איך משתמשים ב-method‏ UpdateUserSample כדי לעדכן משתמש ולהפוך אותו לאדמין בחשבון נתון.

Java

  public static void updateUser(Config config, String email, AccessRight accessRight)
      throws Exception {

    GoogleCredentials credential = new Authenticator().authenticate();

    UserServiceSettings userServiceSettings =
        UserServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates user name to identify user.
    String name =
        UserName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .setEmail(email)
            .build()
            .toString();

    // Create a user with the updated fields.
    User user = User.newBuilder().setName(name).addAccessRights(accessRight).build();

    FieldMask fieldMask = FieldMask.newBuilder().addPaths("access_rights").build();

    try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {

      UpdateUserRequest request =
          UpdateUserRequest.newBuilder().setUser(user).setUpdateMask(fieldMask).build();

      System.out.println("Sending Update User request");
      User response = userServiceClient.updateUser(request);
      System.out.println("Updated User Name below");
      System.out.println(response.getName());
    } catch (Exception e) {
      System.out.println(e);
    }
  }

השוואה בין הרשאות סופר-אדמין, אדמין וגישה רגילה

אי אפשר להסיר משתמשים עם הרשאת סופר-אדמין ב-Business Manager מ-Merchant Center. מידע נוסף על הרשאת סופר-אדמין זמין במאמר ניהול העסק בתפקיד סופר-אדמין.

לשיטות מסוימות, כמו שיטות שכותבות נתוני חשבון, נדרש גישת אדמין. כדי לבדוק מהי רמת הגישה הנדרשת לכל שיטה, אפשר לעיין במסמכי העזר.

אם לא צוינה רמת גישה, אפשר להשתמש בשיטה עם גישה רגילה.

המאמרים הבאים