Cal*_*nds 6 google-drive-api google-api-php-client
我在这里面临一个快速启动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"
我出错的任何建议?我按原样运行脚本,没有任何修改.
Erf*_*fan 12
我调试了它......编写它的人json_encode在将auth结果写入token.json文件之前没有调用时犯了一个错误.
您可以通过json_encode在第45行添加来修复它.
所以...
file_put_contents($credentialsPath, $accessToken);
Run Code Online (Sandbox Code Playgroud)
...应该:
file_put_contents($credentialsPath, json_encode($accessToken));
Run Code Online (Sandbox Code Playgroud)
我已经提交了反馈意见,希望它能得到解决.
编辑:在同一方法中,令牌刷新调用会发生同样的问题
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));
}
Run Code Online (Sandbox Code Playgroud)
代替:
// Refresh the token if it's expired.
if ($client->isAccessTokenExpired()) {
$client->refreshToken($client->getRefreshToken());
file_put_contents($credentialsPath, $client->getAccessToken());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7468 次 |
| 最近记录: |