2

アプリを介してユーザーのリストにアクセスしようとしています。二足認証が機能しません。インストール後にユーザーの同意を必要とせずに Google の API にアクセスできるようにしたいと考えています。gdata lib は今年初めに廃止されましたが、ビジネス要件により、ドメイン管理者がアプリをインストールした後、追加のユーザーの同意なしに API にアクセスする必要があります。

これが私がこれまでに行ったことです:

  • Marketplace でアプリケーションを作成しました。アプリ マニフェストは、このスコープを宣言します。

    https://apps-apis.google.com/a/feeds/user/

  • アプリをテスト ドメインにインストールし、上記のスコープのアクセス許可を付与しました。

  • ここでサンプルを見てきました: https://code.google.com/p/gdata-python-client/source/browse/samples/oauth/

    • 非推奨Serviceのアプローチ: 2_legged_oauth.py
    • 更新されたClientアプローチ: TwoLeggedOAuthExample.py

Python 2.7.5 と gdata 2.0.18 を使用しています。上記の例から適応された私のコードは次のとおりです。

import gdata.gauth
import gdata.apps.client

CONSUMER_KEY = "[snip].apps.googleusercontent.com"
CONSUMER_SECRET = "[snip]"
requestor_id = 'myuser@mydomain.com'

client = gdata.apps.client.AppsClient(domain='mydomain.com', source='myapp-v1')
client.auth_token = gdata.gauth.TwoLeggedOAuthHmacToken(
    CONSUMER_KEY, CONSUMER_SECRET, requestor_id)
client.ssl = True

# Failure occurs here.
feed = client.RetrieveAllUsers()

応答:

<HTML>
<HEAD>
<TITLE>Unknown authorization header</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unknown authorization header</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

送信されるヘッダーの詳細は次のとおりです。

GET /a/feeds/mydomain.com/user/2.0?xoauth_requestor_id=myuser%40mydomain.com HTTP/1.1
Host: apps-apis.google.com
Accept-Encoding: identity
GData-Version: 2.0
Authorization: OAuth oauth_nonce="035378574830673", oauth_timestamp="1383593346", oauth_consumer_key="[snip].apps.googleusercontent.com", oauth_signature_method="HMAC-SHA1", oauth_version="1.0", oauth_signature="[snip]"
User-Agent: test-test-v1 gdata-py/2.0.18

応答に関するデバッグ情報は次のとおりです (atom.http_core.ProxiedHttpClient をデバッグ モードにしてから取得):

reply: 'HTTP/1.1 401 Unknown authorization header\r\n'
header: WWW-Authenticate: GoogleLogin realm="http://www.google.com/accounts/ClientLogin", service="apps"
header: Content-Type: text/html; charset=UTF-8
header: Date: Mon, 04 Nov 2013 19:33:35 GMT
header: Expires: Mon, 04 Nov 2013 19:33:35 GMT
header: Cache-Control: private, max-age=0
header: X-Content-Type-Options: nosniff
header: X-Frame-Options: SAMEORIGIN
header: X-XSS-Protection: 1; mode=block
header: Server: GSE
header: Alternate-Protocol: 443:quic
header: Transfer-Encoding: chunked

two-legged oauth を使用してドメインのユーザーにアクセスするにはどうすればよいですか? 私は新しい Google API クライアント (oauth2clientおよびapiclient) を使用することにオープンです。

4

1 に答える 1

1

OAuth2 サービス アカウントに関するドキュメントを読む こと をお勧めします。

2-legged-OAuth は廃止され、gdata API は大幅に廃止され、apiclient サービスはよりクリーンで使いやすくなりました。

于 2013-11-05T13:00:54.713 に答える