Mengontrol akses ke akun

Anda dapat menggunakan Merchant Accounts API untuk mengontrol siapa yang memiliki akses ke akun penjual Anda, dan level akses yang mereka miliki.

User adalah seseorang yang memiliki akses ke akun penjual Anda. Anda dapat menggunakan Merchant Accounts API untuk melihat, menambahkan, dan menghapus pengguna dari akun Anda.

Menambahkan pengguna ke akun

Untuk menambahkan pengguna, panggil metode accounts.users.create dan tentukan tingkat akses mereka di kolom access_rights dari User.

Contoh permintaan berikut menunjukkan cara menambahkan pengguna baru dengan izin STANDARD dan PERFORMANCE_REPORTING:

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

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

Ganti kode berikut:

  • {ACCOUNT_ID}: ID unik akun Merchant Center Anda.
  • {USER_EMAILID}: Alamat email pengguna yang ingin Anda tambahkan.
  • {NAME}: Nama resource pengguna dalam format accounts/{ACCOUNT_ID}/user/{EMAIL_ADDRESS}.

Setelah permintaan berhasil, respons berikut akan ditampilkan:

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

Permintaan ini akan mengirimkan undangan ke Akun Google yang terkait dengan pengguna baru, yang harus diterima agar pengguna tersebut dianggap sebagai anggota akun Anda.

Contoh berikut menunjukkan cara menggunakan metode CreateUserRequest untuk menambahkan pengguna ke akun Anda.

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);
    }
  }

Melihat pengguna yang memiliki akses ke akun Anda

Untuk melihat semua pengguna yang memiliki akses ke akun Anda, gunakan metode accounts.users.list.

Contoh berikut menunjukkan cara menggunakan metode ListUsersRequest untuk mencantumkan semua pengguna untuk akun tertentu.

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);
    }
  }

Mengambil satu pengguna untuk akun tertentu

Contoh berikut menunjukkan cara menggunakan metode GetUserRequest untuk mengambil pengguna untuk akun tertentu.

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);
    }
  }

Menghapus pengguna dari akun tertentu

Untuk menghapus pengguna dari akun, buat permintaan menggunakan metode accounts.users.delete.

Contoh berikut menunjukkan cara menggunakan metode DeleteUserRequest untuk menghapus pengguna dari akun tertentu.

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);
    }
  }

Mengubah tingkat akses pengguna

Untuk mengubah tingkat akses pengguna, panggil metode accounts.users.patch dengan tingkat akses baru.

Contoh berikut menunjukkan cara menggunakan metode UpdateUserSample untuk memperbarui pengguna agar menjadi admin akun tertentu.

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);
    }
  }

Perbandingan antara akses admin super, admin, dan standar

Pengguna dengan akses admin super ke Pengelola Bisnis tidak dapat dihapus dari Merchant Center. Untuk informasi selengkapnya tentang akses admin super, lihat Mengelola bisnis sebagai admin super.

Beberapa metode, seperti metode yang menulis data akun, memerlukan akses admin. Untuk mempelajari level akses yang diperlukan untuk setiap metode, lihat dokumentasi referensi.

Jika tidak ada tingkat akses yang ditentukan, Anda dapat menggunakan metode dengan akses standar.

Langkah berikutnya