Google驱动器oauth令牌错误

时间:2012-05-17 20:24:01

标签: google-drive-api

我正在运行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中抛出

1 个答案:

答案 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授权页面并按顺序再次授予访问权限请求新的刷新令牌。