我正在运行dredit示例,第一次启动应用时,sql表为空,应用程序插入一个值,所有运行正常,但我截断表,现在'refresh_token'为空,应用程序崩溃。为什么现在是null?与第一次运行情况不一样?为什么截断崩溃认证?
[15-May-2012 22:56:59]验证和授权用户时出错: 获取OAuth2访问令牌时出错,消息:'invalid_grant'
[15-May-2012 22:57:00]从DB检索用户或更新时出错 刷新令牌:SQLSTATE [23000]:完整性约束违规:1048 列'refresh_token'不能为null
[15-May-2012 22:57:00] PHP致命错误:未捕获的异常 带有消息'SQLSTATE [23000]的'PDOException':完整性约束 违规:1048列'refresh_token'不能为空' /var/www/drivecrypt/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}
在第214行的/var/www/drivecrypt/www/auth_handler.php中抛出
答案 0 :(得分:0)
您应该在AuthHandler-> GetUserFromDb中捕获异常并将null返回给AuthHandler-> GetUser。但是,通过执行此操作,它将在会话中使用空刷新令牌创建新的用户条目,后续请求将失败并显示401。
要解决此问题,您需要确保在到达https://code.google.com/p/google-drive-sdk-samples/source/browse/php/auth_handler.php#335时取消设置$ _SESSION ['凭据'],以便将用户重定向到OAuth授权页面并按顺序再次授予访问权限请求新的刷新令牌。