7

Google の新しい Admin SDK の使用に問題があります。特に、Oauth2 を使用するディレクトリ API。私はほとんどそこにいると思いますが、Directory API を使用してユーザーの詳細を取得しようとして行き詰まりました (私は Google Education Edition ドメインを使用しています)。

基本的に私がやろうとしているのは、AD によって管理されている登録ステータスに基づいてユーザーをプロビジョニングまたはプロビジョニング解除する Python スクリプトを作成することです。Oauth1 を使用してこれを行うスクリプトを持っていますが、Oauth2 を使用するように更新したいと考えています。

これは、私が見つけたいくつかの例に基づくコード スニペットです。

f = file('test_key.p12', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
     '606346240424-10stfco1ukj9h4m4b4r40@developer.gserviceaccount.com',
     key,
     scope= 'https://www.googleapis.com/auth/admin.directory.user')
http = httplib2.Http()
http = credentials.authorize(http)
service = build(serviceName='admin', version='directory_v1', http=http)

lists = service.users().get(userKey='joe.blogs@mydomain.com').execute(http=http)
pprint.pprint(lists)

このコードは正しく接続されているように見えますが、クエリを実行しようとすると 403 エラーが発生します。

エラー: https://www.googleapis.com/admin/directory/v1/users/joe.blogs@mydomain.com?alt=json が「このリソース/API にアクセスする権限がありません」を返しました">

私が最初に考えたのは、管理者コンソール ( Google API のコンソール) でこの API を有効にしていないためです。(実際には、Directory API ではなく Admin SDK を有効にしました。有効にする Directory API がなく、それが動作する Admin SDK の一部であることを確認したためです)。

私が見逃している別のステップはありますか、それともどこかでばかげた間違いを犯しましたか?

4

2 に答える 2

6

ブルース、

あなたはかなり近いです。

いくつかのアイテム:

したがって、完全なコードは次のようになります。

    # domain configuration settings
    import domainconfig

    f = file(domainconfig.KEY_FILE, "rb") # b reads file in binary mode; not strictly necessary, but safer to avoid strange Windows EOL characters: https://stackoverflow.com/questions/9644110/difference-between-parsing-a-text-file-in-r-and-rb-mode
    key = f.read()
    f.close()

    credentials = SignedJwtAssertionCredentials(

        domainconfig.SERVICE_ACCOUNT_EMAIL,
        key,
        scope = domainconfig.SCOPE, 
        sub=domainconfig.SUB_ACCOUNT_EMAIL # 'sub' supercedes the deprecated 'prn'

    )

    http = httplib2.Http()
    http = credentials.authorize(http)

    directoryservice = build("admin", "directory_v1", http=http)

    users = directoryservice.users()
    response = users.get(userKey='joe.blogs@mydomain.com').execute() 
于 2013-09-14T05:28:28.007 に答える