Approvazione di un dispositivo
Gli esempi riportati di seguito mostrano come aggiornare lo stato di approvazione di un utente.
REST
Per aggiornare lo stato di approvazione, chiama
devices.deviceUsers.approve()
con un nome del dispositivo e un oggetto cliente.
Python HTTP
L'esempio seguente mostra una funzione di supporto per aggiornare lo stato di approvazione utilizzando la libreria HTTP di Python:
"""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)
Tieni presente che RESOURCE_NAME
viene impostato sul nome della risorsa recuperata da una risorsa del dispositivo.