【问题标题】:Google drive oauth token errorGoogle 驱动器 oauth 令牌错误
【发布时间】:2012-05-17 20:24:01
【问题描述】:

我正在运行 dredit 示例,第一次启动应用程序时,sql 表为空,应用程序插入了一个值,一切运行正常,但我截断了表,现在“refresh_token”为空,应用程序崩溃。为什么现在为空?是不是和第一次跑的情况一样?为什么截断使身份验证崩溃?

[2012 年 5 月 15 日 22:56:59] 验证和授权用户时出错: 获取 OAuth2 访问令牌时出错,消息:'invalid_grant'

[2012 年 5 月 15 日 22:57:00] 从数据库检索用户或更新用户时出错 刷新令牌:SQLSTATE [23000]:违反完整性约束:1048 列“refresh_token”不能为空

[2012 年 5 月 15 日 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 中抛出

【问题讨论】:

  • 您能解释一下为什么要截断表格吗?你到底做了什么(你在哪里截断它?)
  • 我也遇到了这个问题,我尝试进行身份验证,但我根本没有从 API 获得刷新令牌。

标签: google-drive-api


【解决方案1】:

您应该在 AuthHandler->GetUserFromDb 中捕获异常并将 null 返回给 AuthHandler->GetUser。但是,这样做会在会话中创建一个带有空刷新令牌的新用户条目,并且后续请求将失败并返回 401。

为解决此问题,您需要确保在到达https://code.google.com/p/google-drive-sdk-samples/source/browse/php/auth_handler.php#335 时未设置 $_SESSION['credentials'],以便用户将被重定向到 OAuth 授权页面并再次授予访问权限以请求一个新的刷新令牌。

【讨论】:

    猜你喜欢
    • 2013-07-21
    • 2013-07-31
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 2018-10-28
    • 1970-01-01
    相关资源
    最近更新 更多