我已经将访问和刷新令牌存储在数据库中。我想让谷歌客户用这个。我不知道如何在下面的例子中使用它

$client = Zend_Gdata_ClientLogin::getHttpClient('[email protected]', 'password', Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME);
$service = new Zend_Gdata_Spreadsheets($client);

// Get worksheet feed
$query = new Zend_Gdata_Spreadsheets_DocumentQuery();
$query->setSpreadsheetKey('your spreadsheet key');
$feed = $spreadsheetService->getWorksheetFeed($query);

我要用访问令牌替换电子邮件和密码。有人帮我怎么做。我在下面试过了。但我只有一个例外
捕获到异常:预期响应代码200,得到401

无状态令牌已过期
$client = Zend_Gdata_AuthSub::getHttpClient('ya29.XXXXXXX');

再试试,
$client = new Zend_Gdata_HttpClient();
$session_token =Zend_Gdata_AuthSub::getAuthSubSessionToken('ya29.XXXXXXX',$client);
$client->setAuthSubToken($sessionToken);

捕获到异常:令牌升级失败。原因:

最佳答案

我觉得你把事情搞混了。
clientlogin和authsub是不同的身份验证api(均已弃用)。
clientlogin令牌在两周或两周之前过期(请参阅:https://developers.google.com/gdata/faq#clientlogin_expire)。只要令牌不过期,就可以通过调用setClientLoginToken的setterZend_Gdata_HttpClient来使用它。
例子:

$client = Zend_Gdata_ClientLogin::getHttpClient('[email protected]', 'password', Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME);
$token = $client->getClientLoginToken();
//Save to DB / in session / whatever
$client = new Zend_Gdata_HttpClient();
$client->setClientLoginToken($token);
//Do stuff

您还可以使用zend_缓存来缓存整个httpclient对象。
authsub或oauth2.0(更好,但zf没有提供类)可能更适合您的需要,因为令牌不会过期(authsub)或可以刷新(oauth2)
文件
作者:
采埃孚文件
撤销无限令牌>
http://framework.zend.com/manual/1.12/de/zend.gdata.authsub.html
非统组织2:
刷新令牌>https://developers.google.com/accounts/docs/AuthSub?hl=de#AuthSubRevokeToken

关于php - 使用访问 token 获取Google客户端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18013564/

10-09 07:24