当前位置:  开发笔记 > 编程语言 > 正文

Google-API-PHP客户端出现问题,运行快速启动脚本时出错

如何解决《Google-API-PHP客户端出现问题,运行快速启动脚本时出错》经验,为你挑选了1个好方法。

我在这里面临一个快速启动php脚本的问题:https://developers.google.com/drive/v2/web/quickstart/php

当我第一次运行脚本时,它会完美执行,访问令牌存储在一个名为:drive-php-quickstart.json的文件中

当我第二次运行脚本时,它给了我错误:

错误开始:

注意:485行的\ google-api-php-client\src\Google\Client.php中的未定义索引:expires_in

致命错误:带有消息'刷新令牌的未捕获异常'LogicException'必须传入或设置为setAccessToken'的一部分

错误结束:

我的假设是文件中保存的访问令牌格式不正确.

目前的格式:

ya29.CODE-oN_Bearer36001/_ANOTHER-CODE-ANOTHER_ANOTHER_CODE

如您所见,它不包含变量"expires_in"

我出错的任何建议?我按原样运行脚本,没有任何修改.



1> Erfan..:

我调试了它......编写它的人json_encode在将auth结果写入token.json文件之前没有调用时犯了一个错误.

您可以通过json_encode在第45行添加来修复它.

所以...

file_put_contents($credentialsPath, $accessToken);

...应该:

file_put_contents($credentialsPath, json_encode($accessToken));

我已经提交了反馈意见,希望它能得到解决.

编辑:在同一方法中,令牌刷新调用会发生同样的问题

edit2:这是我在Github讨论中的相关评论以及Google的回答:https://github.com/google/google-api-php-client/issues/263#issuecomment-186557360

我提出了以下几点建议:

if ($client->isAccessTokenExpired()) {
    $refreshToken = $client->getRefreshToken();
    $client->refreshToken($refreshToken);
    $newAccessToken = $client->getAccessToken();
    $newAccessToken['refresh_token'] = $refreshToken;
    file_put_contents($credentialsPath, json_encode($newAccessToken));
}

代替:

// Refresh the token if it's expired.
if ($client->isAccessTokenExpired()) {
    $client->refreshToken($client->getRefreshToken());
    file_put_contents($credentialsPath, $client->getAccessToken());
}

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有