Approving a device

The following examples shows you how to update the approval state for a user.

REST

To update the approval state, call devices.deviceUsers.approve() with a device name and customer object.

Python HTTP

The following example shows a helper function to update the approval state using the Python HTTP library:

"""Example script to use the approve method of the Devices API.""" import pprint from six.moves import urllib import google.auth.transport.requests from google.oauth2 import service_account SCOPES = ['https://www.googleapis.com/auth/cloud-identity.devices'] BASE_URL = 'https://cloudidentity.googleapis.com/v1/' # Change this to the location of the service account key SA_FILE = '' # Enter the administrator to call as here. ADMIN_EMAIL = '' # Enter the Device User Resource Name. You can get this from the value # of the name field in the results of a List method call RESOURCE_NAME = '' if not SA_FILE: print('Please specify the location of the service account key file') if not ADMIN_EMAIL: print('Please specify the email of the administrator to call as') if not RESOURCE_NAME: print('Please specify the Device User Resource Name to be approved') if not SA_FILE or not ADMIN_EMAIL or not RESOURCE_NAME: exit(-1) def create_delegated_credentials(user_email): credentials = service_account.Credentials.from_service_account_file( SA_FILE, scopes=['https://www.googleapis.com/auth/cloud-identity.devices']) delegated_credentials = credentials.with_subject(user_email) return delegated_credentials ###################################################################### # AUTHENTICATE the service account and retrieve an oauth2 access token request = google.auth.transport.requests.Request() dc = create_delegated_credentials(ADMIN_EMAIL) dc.refresh(request) print('Access token: ' + dc.token + '\n') ############################### # Approve the DeviceUser header = { 'authorization': 'Bearer ' + dc.token, 'Content-Type': 'application/json' } action_url = BASE_URL + RESOURCE_NAME + ':approve' request = urllib.request.Request(action_url, None, headers=header) request.get_method = lambda: 'POST' try: approve_response = urllib.request.urlopen(request) except urllib.error.HTTPError as e: if e.code == 400: print('The request was invalid. Perhaps the device is already approved?') else: print('Unknown error occurred') exit(-1) pp = pprint.PrettyPrinter(indent=4) pp.pprint(approve_response) 

Note that RESOURCE_NAME would be set to the name of the resource retrieved from a device resource.