0

私は dredit の例を実行していました。最初にアプリを起動すると、SQL テーブルは空で、アプリは値を挿入します。すべて正常に実行されますが、テーブルを切り捨てて、「refresh_token」が null になり、アプリがクラッシュします。なぜ今nullですか?初回走行時と同じ状況ではないですか?認証をクラッシュさせるのはなぜですか?

[15-May-2012 22:56:59] ユーザーの認証および承認時のエラー: OAuth2 アクセス トークンの取得エラー、メッセージ: 'invalid_grant'

[2012 年 5 月 15 日 22:57:00] DB からのユーザーの取得中またはリフレッシュ トークンの更新中にエラーが発生しました: SQLSTATE[23000]: 整合性制約違反: 1048 列 'refresh_token' を null にすることはできません

[2012 年 5 月 15 日 22:57:00] PHP の致命的なエラー: メッセージ「SQLSTATE [23000]: 整合性制約違反: 1048 列 'refresh_token' は null にすることはできません」の /var/www/drivecrypt/ で、キャッチされない例外 'PDOException' www/auth_handler.php:214

スタックトレース:

#0 /var/www/drivecrypt/www/auth_handler.php(214): PDOStatement->execute()

#1 /var/www/drivecrypt/www/auth_handler.php(244): AuthHandler->CreateUserInDb(Object(Userinfo), NULL)

#2 /var/www/drivecrypt/www/auth_handler.php(293): AuthHandler->GetUser(Object(Userinfo), NULL)

#3 /var/www/drivecrypt/www/index.php(48): AuthHandler->VerifyAuth() #4 {main}

/var/www/drivecrypt/www/auth_handler.php の 214 行目にスローされます

4

1 に答える 1

0

AuthHandler->GetUserFromDb で例外をキャッチし、null を AuthHandler->GetUser に返す必要があります。ただし、これを行うと、空の更新トークンを使用してセッションに新しいユーザー エントリが作成され、後続の要求は 401 で失敗します。

この問題に対処するには、https://code.google.com/p/google-drive-sdk-samples/source/browse/php/auth_handler にアクセスしたときに $_SESSION['credentials'] が設定されていないことを確認する必要があります.php#335、ユーザーが OAuth 認証ページにリダイレクトされ、新しい更新トークンを要求するためにアクセスを再度許可するようにします。

于 2012-05-22T13:51:36.970 に答える