4

ユーザー用のカレンダーと Google docs フォルダーを作成し、API を使用してイベントを挿入し、ドキュメントを追加する django アプリを作成しています。数ヶ月前、それは十分にうまくいきました。現在、コードの大規模なリファクタリングを行っており、前述のコンポーネントをテストしているときに、それらが機能しなくなっていることを発見しました! フォルダーまたはカレンダーを作成しようとすると、API から次の応答が返されます。

RequestError: {'status': 401, 'body': '<HTML>\n<HEAD>\n<TITLE>Unknown authorization header</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>Unknown authorization header</H1>\n<H2>Error 401</H2>\n</BODY>\n</HTML>\n', 'reason': 'Unknown authorization header'}

私のコードは次のようになります-Googleドキュメントのこの例に基づいて-(ドキュメントコードは短いので、それを貼り付けますが、認証ビットは実際には両方に共通の機能です):

from gdata.auth import OAuthSignatureMethod, OAuthToken, OAuthInputParams
from gdata.calendar.service import CalendarService
from django.conf import settings
client_instance = CalendarService()
client_instance.SetOAuthInputParameters(OAuthSignatureMethod.HMAC_SHA1,
                                settings.OAUTH_CONSUMER_KEY,
                                consumer_secret=settings.OAUTH_CONSUMER_SECRET)
user_tokens = UserToken.objects.get(user=user)
if not user_tokens.oauth_access_token_value or not user_tokens.oauth_valid_token:
    raise Exception('The user has not allowed us to access his services')      
oauth_token=OAuthToken(key=user_tokens.oauth_access_token_value,    secret=user_tokens.oauth_access_token_secret)
oauth_token.oauth_input_params = OAuthInputParams(OAuthSignatureMethod.HMAC_SHA1,
                         settings.OAUTH_CONSUMER_KEY,
                        consumer_secret=settings.OAUTH_CONSUMER_SECRET)
client_instance.SetOAuthToken(oauth_token)
new_folder = docs_service.CreateFolder("some folder")

例外はその最後の行から来ています.APIで何かが変更されましたか、それとも私だけですか? (私だけだと思いますが、数か月前に機能したため、表示できません)

4

1 に答える 1

0

その理由は、jsonの応答に示されています。'reason': 'Unknown authorization header'

考えられる原因の1つは、マシンの現地時間です。oauthは現在のUNIXタイムスタンプを使用してリクエストに署名および検証するため、ローカルマシンの時刻が正しいことを確認してください。Googleサポートフォーラム

ログに記録されたバグのリストは次のとおりです。最初のものはあなたのケースによく合うようです:

お役に立てれば :)

于 2011-05-04T17:51:22.683 に答える