2017-12-19 2 views
2

Ich versuche, den neuen Android-Management-API für unsere Organisation zuzugreifen, aber ich laufe in Probleme Zugriff auf das API. Alles funktioniert gut, wenn Sie über den API-Explorer auf die API zugreifen. Um dies auf unserem Server zu laufen, ich habe ein neues Projekt in der Google-Cloud-Konsole erstellt und ein Dienstkonto dort erstellt. Ich habe den Schlüssel heruntergeladen und verwende ihn für lokale Tests auf meinem Computer. jedoch auf dem ersten signupUrl Anruf, erhalte ich einen 403-Fehler, die besagt: „Caller nicht Projekt zu verwalten ist berechtigt“. Das Dienstkonto Ich bin mit dem „Projekt Owner“ Rolle hat, sehe ich nicht, wie ich es noch mehr Privilegien geben kann ...Failing android Managements Anmeldungen URL erstellen

Der Code Ich verwende:

def initial_enterprise_user(request): 
    enterprise_token = request.GET.get('enterpriseToken') 
    usr = request.user 

    scopes = ['https://www.googleapis.com/auth/androidmanagement'] 

    credentials = ServiceAccountCredentials.from_json_keyfile_name(settings.SERVICE_ACCOUNT, scopes=scopes) 

    if enterprise_token is None: 
     androidmanagement = build('androidmanagement', 'v1', credentials=credentials) 
     resp = androidmanagement.signupUrls().create(projectId=settings.ANDROID_MGMT_PROJECTID).execute() 
     if resp.status_code == 200: 
      usr.signup_url_name = resp.json()['name'] 
      usr.save() 
      return render(request, 'initial_login.html', {'response_url': resp.json()['url']}) 
     else: 
      return HttpResponse('Failed to get signup url') 
    else: 
     # handle token present 
+0

Ist das Projekt des Dienstkontos dasselbe wie das Projekt, auf das Sie zugreifen möchten (settings.ANDROID_MGMT_PROJECTID)? – Fred

+0

Ja ist es. Ich war mit einem anderen Projekt, das in einem anderen Gerät Management POC verwendet wurde vor und versuchte auch, ein völlig neues Projekt. Ich habe die Android Management API zu diesem Projekt hinzugefügt, aber es scheint nicht zu funktionieren ... – stamppot

+0

Ich versuchte zu reproduzieren, konnte aber nicht. Wenn ich ein Dienstkonto mit der Rolle "Besitzer" oder "Editor" erstelle, funktioniert es einwandfrei, indem ich die Methode signupUrls.create mit dem Projekt anrufe, mit dem das Dienstkonto erstellt wurde. Überprüfen Sie vielleicht in der IAM-Konfiguration, dass die Dienstkonten die richtigen Rollen für das richtige Projekt haben (https://console.cloud.google.com/iam-admin/iam/)? – Fred

Antwort

1

I hat ein neues Projekt im System erstellt und vor der Aktivierung der Android-Verwaltungs-API das Dienstkonto erstellt. Das Dienstkonto wurde mit der ausgewählten Rolle "Besitzer" erstellt. Dies scheint die richtige Reihenfolge in der App ermöglicht zu haben, da sie jetzt funktioniert. Zuvor hatte ich die API zum Projekt hinzugefügt und anschließend meine Dienstkonten erstellt und anschließend mit der API verknüpft.

+0

Vielen Dank für Ihre Lösung! Möglicherweise hat das Problem damit zu tun, wie Berechtigungen in einer Rolle aufgeführt sind, die Rolle Besitzer ist nur eine Gruppe von Berechtigungen und eine dieser Berechtigungen ermöglicht die Verwaltung von Geräten. Aber wie auch immer, froh zu hören, dass Sie eine Lösung gefunden haben. – Fred