1

アプリにユーザーによるアクセス許可が与えられ、認証コードがリダイレクトURLに配信された後、突然、Oauthプロセス中にエラーが発生します。同じコードを数週間使用していますが、正常に機能しています。私は何も変更していないと確信しています。

今日のGoogleドライブAPIに問題はありますか?

エラーはここのPythonコードで発生します:

credentials = flow.step2_exchange(authorization_code)

エラーメッセージ:

FlowExchangeError: Invalid response 400.

Googleの例からコピーされたexchange_codeメソッド全体:

def exchange_code(authorization_code):
  """Exchange an authorization code for OAuth 2.0 credentials.

  Args:
    authorization_code: Authorization code to exchange for OAuth 2.0
                    credentials.
  Returns:
    oauth2client.client.OAuth2Credentials instance.
  Raises:
    CodeExchangeException: an error occurred.


  """

  logging.debug(authorization_code);

  flow = flow_from_clientsecrets(CLIENTSECRETS_LOCATION, ' '.join(SCOPES))

  flow.redirect_uri = REDIRECT_URI


  try:
    credentials = flow.step2_exchange(authorization_code)
    return credentials
  except FlowExchangeError, error:
    logging.error('An error occurred: %s', error)
    raise CodeExchangeException(None)

Oauth Playgroundを使用すると、次のエラー応答が返されます。

HTTP/1.1 400 Ok
Status: 400
Content-length: 37
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
X-google-cache-control: remote-fetch
-content-encoding: gzip
Server: GSE
Via: HTTP/1.1 GWA
Pragma: no-cache
Cache-control: no-cache, no-store, max-age=0, must-revalidate
Date: Fri, 10 Aug 2012 03:23:54 GMT
X-frame-options: SAMEORIGIN
Content-type: application/json
 Expires: Fri, 01 Jan 1990 00:00:00 GMT
{
  "error" : "unauthorized_client"
}

コードが現在のように数週間機能していたときに、これが発生し始める理由はありますか?

ありがとう、クリス

4

2 に答える 2

1

HTTP応答コード400は、リクエストが何らかの理由で無効であり、何が問題であるかを示すより説明的なエラーメッセージが表示されるはずであることを意味します。

おそらくPythonライブラリが完全なメッセージを隠しているので、OAuth 2.0 Playgroundで同じリクエストを試して、自分のリクエストと比較することをお勧めします。

https://code.google.com/oauthplayground/

于 2012-08-10T02:39:19.677 に答える
0

私はついにコードを再び機能させることができました。GAEアプリのバージョンを以前のバージョンに戻しました。Oauthexchange_codeが再び機能しました。次に、コードをまったく変更せずに、GAEの現在のバージョンに戻しましたが、引き続き機能します。

そのため、コードを変更せずに最近GAEで新しいバージョンを作成したときに、oauthプロセスが機能しなくなりました。それが価値があるもののために.....

于 2012-08-12T15:04:56.870 に答える