2

SQL API から Google フュージョン テーブル用の新しい API v1 に移行しています。Google api python ライブラリを使用しています。移行手順を完了しましたが、まだ oauth に問題があります。サービス アカウント認証を行う必要があり、セットアップ済みです。ここにあるサンプルに基づいて認証をモデル化しました: http://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py

これが私のコードです:

# Read in private key                                                                                                                                                        
f = file(KEY_FILE,'rb')
key = f.read()
f.close()

# Create an httplib2.Http object to handle our HTTP requests and authorize it                                                                                                
creds = SignedJwtAssertionCredentials(API_EMAIL, key,   
    scope='https://www.googleapis.com/auth/fusiontables')
http = httplib2.Http()
http = creds.authorize(http)

print vars(http.credentials)
service = build("fusiontables", "v1", http=http)

result = service.query().sql(sql="SELECT rowid, Title FROM "+TABLE_ID+" WHERE
ID="+str(id)).execute()

response = service.query().sql(sql="DELETE FROM "+TABLE_ID+" WHERE 
ROWID='"+result["rows"][0][0]+"'").execute()

select ステートメントは機能しますが、delete ステートメントで 403 Forbidden エラーが発生します。print ステートメントは、空の資格情報を示しています。

Traceback (most recent call last):
File "test_oauth.py", line 36, in <module>
response = service.query().sql(sql="DELETE FROM "+TABLE_ID+" WHERE
ROWID='"+result["rows"][0][0]+"'").execute()
File "/lib/google-api/oauth2client/util.py", line 120, in positional_wrapper
return wrapped(*args, **kwargs)
File "/lib/google-api/apiclient/http.py", line 680, in execute
raise HttpError(resp, content, uri=self.uri)
apiclient.errors.HttpError: <HttpError 403 when requesting
https://www.googleapis.com/fusiontables/v1/query
alt=json&sql=DELETE+FROM+xxxx+WHERE+ROWID%3D%27239601%27 returned "Forbidden">

API Explorer からこれらのステートメントを問題なく実行できます。助けていただければ幸いです、ありがとう!!

4

0 に答える 0