我已经将访问和刷新 token 存储在我的数据库中。我想让谷歌客户端使用它。我不知道如何在下面的例子中使用它
$client = Zend_Gdata_ClientLogin::getHttpClient('you@there.com', '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);
我想用访问 token 替换电子邮件和密码。有人帮我怎么做。我在下面试过。但我只有异常(exception)
Caught exception: Expected response code 200, got 401
和 无状态 token 已过期
$client = Zend_Gdata_AuthSub::getHttpClient('ya29.XXXXXXX');
再试一次,
$client = new Zend_Gdata_HttpClient();
$session_token =Zend_Gdata_AuthSub::getAuthSubSessionToken('ya29.XXXXXXX',$client);
$client->setAuthSubToken($sessionToken);
Caught exception: Token upgrade failed. Reason:
最佳答案
我觉得你把事情搞混了。
ClientLogin 和 AuthSub 是不同的身份验证 API(均已弃用)。
ClientLogin token 在两周后或更早时间到期(请参阅:https://developers.google.com/gdata/faq#clientlogin_expire)。您可以通过调用 Zend_Gdata_HttpClient
的 setter setClientLoginToken
使用 token ,只要它没有过期。
示例:
$client = Zend_Gdata_ClientLogin::getHttpClient('email@example.com', '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_Cache 缓存整个 HttpClient 对象。
AuthSub 或 OAuth 2.0(更好,但没有 ZF 提供的类)可能更适合您的需求,因为 token 不会过期 (AuthSub) 或可以刷新 (OAuth2)
文档
授权订阅:
- 采埃孚文档 > http://framework.zend.com/manual/1.12/de/zend.gdata.authsub.html
- 撤销无限 token > https://developers.google.com/accounts/docs/AuthSub?hl=de#AuthSubRevokeToken
OAuth2:
关于php - 使用访问 token 获取 Google 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18013564/