私の組織の新しいAndroid管理APIにアクセスしようとしていますが、APIへのアクセスに問題があります。 APIエクスプローラを使用してAPIにアクセスするとすべて正常に動作します。 Googleのサーバーでこれを実行するには、Googleのクラウドコンソールで新しいプロジェクトを作成し、そこでサービスアカウントを作成しました。私はキーをダウンロードし、私のマシン上のローカルテストに使用します。 しかし、最初のsignupUrlコール時に、「発信者にプロジェクトを管理する権限がありません」という403エラーが表示されます。私が使用しているサービスアカウントは、「プロジェクトの所有者」の役割を持って、私はそれをさらに権限を与えることができますどのように表示されていない...アンドロイド管理サインアップURLの作成に失敗しました
私が使用しているコード:
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
サービスアカウントのプロジェクトは、アクセスしようとしているプロジェクト(settings.ANDROID_MGMT_PROJECTID)と同じですか? – Fred
はい、そうです。私は前に別のデバイス管理POCで使用されていた別のプロジェクトを使用していましたが、まったく新しいプロジェクトを作成しようとしました。 Android Management APIをこのプロジェクトに追加しましたが、動作しないようです... – stamppot
私は再現しようとしましたができませんでした。ロール "Owner"または "Editor"を持つサービスアカウントを作成すると、サービスアカウントを作成するために使用されたプロジェクトでsignupUrls.createメソッドを呼び出すことができます。サービスアカウントが適切なプロジェクト(https://console.cloud.google.com/iam-admin/iam/)に適切な役割を持っているかどうかをIAM設定で確認しますか? – Fred