gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:37:51 25 4
gpt4 key购买 nike

我在这里遇到了快速启动 php 脚本的问题:https://developers.google.com/drive/v2/web/quickstart/php

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

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

错误开始:

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

fatal error :未捕获的异常“LogicException”与消息“必须传入或设置为 setAccessToken”的一部分

错误结束:

我的假设是保存在文件中的访问 token 格式不正确。

当前格式:

ya29.CODE-on_Bearer36001/_ANOTHER-CODE-ANOTHER_ANOTHER_CODE

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

有什么建议我哪里出错了吗?我按原样运行脚本,没有修改。

最佳答案

我已经调试过了....写它的人犯了一个错误,没有调用json_encode在将身份验证结果写入 token.json 文件之前。

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

所以...

file_put_contents($credentialsPath, $accessToken);

...应该:
file_put_contents($credentialsPath, json_encode($accessToken));

我已经提交了反馈,所以希望它会得到修复。

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

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());
}

关于google-drive-api - Google-API-PHP 客户端问题,运行快速启动脚本时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34384222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com