Google Ads 관리자는 Google Ads 계정에 대한 사용자 액세스 초대장을 관리할 수 있습니다. 이러한 API를 호출하려면 대상 고객 계정에 ADMIN 액세스 권한이 있는 인증된 사용자가 필요합니다.
사용자 초대
Google Ads 계정에 대한 액세스 권한을 관리하는 과정에서 새 사용자에게 이메일 초대장을 보낼 수 있습니다.
이는 새
CustomerUserAccessInvitation
을(를) MutateCustomerUserAccessInvitation 메서드를 사용하여
CustomerUserAccessInvitationService의 방식으로 수행됩니다.
이메일 초대장은 초대장을 받은 사용자가 수동으로 수락해야 합니다. 사용자는 대체 이메일 주소를 사용하여 초대장을 수락할 수도 있습니다. 초대장이 수락되면 상태가 보류 중에서 변경되기까지 최대 24시간이 소요될 수 있습니다. 확인되면 사용자 액세스 권한 관리에 설명된 대로 사용자의 역할 과 액세스 권한을 관리할 수 있습니다.
Google에서 복수 사용자 승인 체계가 필요하다고 판단하는 경우:
MutateCustomerUserAccessInvitationResult는 승인이 필요한 보류 중인 검토의 리소스 이름이 포함된multi_party_auth_review필드를 채웁니다.resource_name필드는 채워지지 않습니다.- 보류 중인 복수 사용자 승인 체계 요청이 해결될 때까지 동일한 이메일 주소로 새 초대장을 보낼 수 없습니다.
- 보류 중인 검토 요청은 두 번째
관리자가
ResolveMultiPartyAuthReview메서드를 사용하여 승인하거나 거부할 수 있습니다. 자세한 내용은 복수 사용자 승인 체계 가이드를 참고하세요.
다음 코드 스니펫은 초대장을 보내는 방법을 보여줍니다.
자바
// Constructs an access invitation. CustomerUserAccessInvitation invitation = CustomerUserAccessInvitation.newBuilder() .setEmailAddress(emailAddress) .setAccessRole(accessRole) .build(); // Constructs an operation to send the invitation. CustomerUserAccessInvitationOperation operation = CustomerUserAccessInvitationOperation.newBuilder().setCreate(invitation).build(); // Creates a CustomerUserAccessInvitationServiceClient. try (CustomerUserAccessInvitationServiceClient client = googleAdsClient.getLatestVersion().createCustomerUserAccessInvitationServiceClient()) { // Issues the request. MutateCustomerUserAccessInvitationResponse response = client.mutateCustomerUserAccessInvitation(String.valueOf(customerId), operation); if (response.getResult().getMultiPartyAuthReview().isEmpty()) { // A multi-party auth review was not triggered. System.out.printf( "Customer user access invitation was sent for customerId = " + "%d to email address = '%s' and access role = '%s'. The invitation resource " + "name is '%s'.%n", customerId, emailAddress, accessRole, response.getResult().getResourceName()); } else { // A multi-party auth review was triggered. See // FetchAndApprovePendingMultiPartyAuthReviews.java for an example on how to fetch // and approve an MPA auth review. System.out.printf( "A multi-party auth review was triggered. The MPA review resource name is %s. " + "Ask a second administrator to approve this request to send user access invitation. " + "See FetchAndApprovePendingMultiPartyAuthReviews.java for an example on " + "how to approve an MPA auth review using the API.%n", response.getResult().getMultiPartyAuthReview()); } }
C#
MutateCustomerUserAccessInvitationRequest invitationRequest = new MutateCustomerUserAccessInvitationRequest() { CustomerId = customerId.ToString(), Operation = new CustomerUserAccessInvitationOperation() { Create = new CustomerUserAccessInvitation() { EmailAddress = emailAddress, AccessRole = accessRole }, } }; try { var response = service.MutateCustomerUserAccessInvitation(invitationRequest); if (response.Result.MultiPartyAuthReview == null) { // A multi-party auth review was not triggered. Console.WriteLine("Customer user access invitation was sent for " + $"customerId = {customerId} to email address = {emailAddress} and " + $"access role = {accessRole}. The invitation resource name is " + $"{response.Result.ResourceName}."); } else { // A multi-party auth review was triggered. See // FetchAndApprovePendingMultiPartyAuthReviews.cs for an example on how to fetch // and approve an MPA auth review. Console.WriteLine($"A multi-party auth review was triggered. The MPA review " + $"resource name is {response.Result.MultiPartyAuthReview}. Ask a second " + $"administrator to approve this request to send user access invitation. " + $"See FetchAndApprovePendingMultiPartyAuthReviews.cs for an example on " + $"how to approve an MPA auth review using the API."); } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; }
PHP
// Creates a customer user access invitation. $customerUserAccessInvitation = new CustomerUserAccessInvitation([ 'email_address' => $emailAddress, 'access_role' => AccessRole::value($accessRole) ]); // Creates a customer user access invitation operation. $customerUserAccessInvitationOperation = new CustomerUserAccessInvitationOperation(); $customerUserAccessInvitationOperation->setCreate($customerUserAccessInvitation); // Issues a mutate request to send the customer user access invitation and prints its // information. $customerUserAccessInvitationServiceClient = $googleAdsClient->getCustomerUserAccessInvitationServiceClient(); $response = $customerUserAccessInvitationServiceClient->mutateCustomerUserAccessInvitation( MutateCustomerUserAccessInvitationRequest::build( $customerId, $customerUserAccessInvitationOperation ) ); printf( "Customer user access invitation with resource name '%s' was sent from customer " . "ID %d to email address '%s' with access role '%s'.%s", $response->getResult()->getResourceName(), $customerId, $emailAddress, $accessRole, PHP_EOL );
Python
invitation_operation: CustomerUserAccessInvitationOperation = ( client.get_type("CustomerUserAccessInvitationOperation") ) invitation: CustomerUserAccessInvitation = invitation_operation.create invitation.email_address = email_address # The access_role field in the CustomerUserAccessInvitation message expects # an AccessRoleEnum value (which is an int). invitation.access_role = client.enums.AccessRoleEnum[access_role].value response: MutateCustomerUserAccessInvitationResponse = ( service.mutate_customer_user_access_invitation( customer_id=customer_id, operation=invitation_operation ) ) if response.result.multi_party_auth_review: # A multi-party auth review was triggered. See # FetchAndApprovePendingMultiPartyAuthReviews.cs for an example on how # to fetch and approve an MPA auth review. print( "A multi-party auth review was triggered. The MPA review resource " f"name is {response.result.multi_party_auth_review}. Ask a second " "administrator to approve this request to send user access invitation. " "See advanced_operations/fetch_and_approve_pending_multi_party_auth_reviews.py " "for an example on how to approve an MPA auth review using the API." ) else: # A multi-party auth review was not triggered. print( "Customer user access invitation was sent for " f"customer ID: '{customer_id}', " f"email address {email_address}, and " f"access role {access_role}. The invitation resource name is: " f"{response.result.resource_name}" )
Ruby
operation = client.operation.create_resource.customer_user_access_invitation do |inv| inv.email_address = email_address inv.access_role = access_role end # Issues a mutate request to get the response. response = client.service.customer_user_access_invitation.mutate_customer_user_access_invitation( customer_id: customer_id, operation: operation, ) # Prints out information of the created invitation. puts "Customer user access invitation was sent for customerId = #{customer_id} " \ "email address = '#{email_address}', " \ "access role = '#{access_role}'."
Perl
sub invite_user_with_access_role { my ($api_client, $customer_id, $email_address, $access_role) = @_; # Create the user access invitation. my $user_access_invitation = Google::Ads::GoogleAds::V25::Resources::CustomerUserAccessInvitation->new({ emailAddress => $email_address, accessRole => $access_role }); # Create the user access invitation operation. my $invitation_operation = Google::Ads::GoogleAds::V25::Services::CustomerUserAccessInvitationService::CustomerUserAccessInvitationOperation ->new({create => $user_access_invitation}); # Send the user access invitation. my $invitation_response = $api_client->CustomerUserAccessInvitationService()->mutate({ customerId => $customer_id, operation => $invitation_operation }); if (not $invitation_response->{result}{multiPartyAuthReview}) { printf "Customer user access invitation was sent for customerId = %d " . "to email address = '%s' and access role = '%s'. " . "The invitation resource name is '%s'.\n", $customer_id, $email_address, $access_role, $invitation_response->{result}{resourceName}; } else { printf "A multi-party auth review was triggered. The MPA review " . "resource name is '%s'. Ask a second administrator to approve this " . "request to send user access invitation. See " . "fetch_and_approve_pending_multi_party_auth_reviews.pl for an example " . "on how to approve an MPA auth review using the API.\n", $invitation_response->{result}{multiPartyAuthReview}; } return 1; }
curl
# This code example sends an invitation email to a user. # # The invitation is to manage a customer account with a desired access role. # # Variables: # API_VERSION, # CUSTOMER_ID, # MANAGER_CUSTOMER_ID, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. # # EMAIL_ADDRESS: The email address of the user to invite. curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/customerUserAccessInvitations:mutate" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "operation": { "create": { "emailAddress": "${EMAIL_ADDRESS}", "accessRole": "ADMIN" } } } EOF
초대장 취소
CustomerUserAccessInvitationService의
MutateCustomerUserAccessInvitation 메서드로 remove 작업을 실행하고 삭제할
초대장의 리소스 이름을 전달하여 보류 중인 초대장을 취소할 수 있습니다.
사용자 초대 검색
Google Ads Query Language 문을 작성하여 고객
ID와 연결된 모든
CustomerUserAccessInvitation 항목을 쿼리하면 보류 중인 사용자 초대 목록을 가져올 수 있습니다. 일반적인 쿼리는 다음과 같습니다.
SELECT
customer_user_access_invitation.invitation_id,
customer_user_access_invitation.email_address,
customer_user_access_invitation.access_role,
customer_user_access_invitation.invitation_status,
customer_user_access_invitation.creation_date_time
FROM customer_user_access_invitation
추가 필터링 조건을 추가하여 초대장의 하위 집합을 가져올 수 있습니다.
예를 들어 일반적인 사용 사례는 customer_user_access_invitation.invitation_status = PENDING을 필터링하여 보류 중인 사용자 초대 목록을 가져오는 것입니다.