gpt4 book ai didi

php - zend gdata 和谷歌电子表格未连接

转载 作者:可可西里 更新时间:2023-11-01 12:39:59 25 4
gpt4 key购买 nike

我已经使用 Zend Gdata 一段时间了,今天我收到一个错误

Notice: Undefined offset: ClientLogin.php on line 150

通过 php,这已经工作了一段时间,今天没有任何改变它就停止工作了,我猜测一些代表谷歌的弃用服务与 zend gdata 可能是 Zend_Gdata_ClientLogin::getHttpClient( ) 方法之类的,任何人都可以确认或帮助我解决这个问题。我用来连接的代码如下:

    require_once('Zend/Loader.php');
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Docs');
Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
require_once 'Zend/Gdata.php';
require_once 'Zend/Gdata/AuthSub.php';
require_once 'Zend/Gdata/Spreadsheets.php';
require_once 'Zend/Gdata/Spreadsheets/DocumentQuery.php';
require_once 'Zend/Gdata/Spreadsheets/ListQuery.php';
require_once 'Zend/Loader.php';


$sourceUser = "myemail";
$sourcePass = "mysuperawesomepassword";
$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$sourceClient = Zend_Gdata_ClientLogin::getHttpClient($sourceUser, $sourcePass, $service);
$connection = new Zend_Gdata_Spreadsheets($sourceClient);

我将 zend gdata 与 google 电子表格一起使用

同样错误指向这一行

$sourceClient = Zend_Gdata_ClientLogin::getHttpClient($sourceUser, $sourcePass, $service);

正如我所说,我已经使用它一段时间了,我这边没有任何改变

最佳答案

我将 ClientLogin 用于服务器到服务器应用程序。

今天急需切换到 oAuth2。我合并了一些我发现的使用“服务帐户”获取授权 token 的示例

function get_token() {
$client_email = '0-1.apps.googleusercontent.com';
$client_email = '0-1@developer.gserviceaccount.com';
$private_key = file_get_contents('abc.p12');
$scopes = array('https://spreadsheets.google.com/feeds');
$credentials = new Google_Auth_AssertionCredentials(
$client_email,
$scopes,
$private_key,
'notasecret', // Default P12 password
'http://oauth.net/grant_type/jwt/1.0/bearer' // Default grant type
);

$client = new Google_Client();
$client->setAssertionCredentials($credentials);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion();
}
$tokenData = json_decode($client->getAccessToken());
return $tokenData->access_token;
}

我需要使用开发者电子邮件而不是应用程序电子邮件,必须将同一电子邮件作为用户添加到电子表格

然后生成的 token 可以与 php-google-spreadsheet-client 一起使用

$accessToken = get_token();

$serviceRequest = new DefaultServiceRequest($accessToken);
ServiceRequestFactory::setInstance($serviceRequest);

$spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
$spreadsheetFeed = $spreadsheetService->getSpreadsheets();

$spreadsheet = $spreadsheetFeed->getByTitle('Hello World');

关于php - zend gdata 和谷歌电子表格未连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30472059/

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