我已经在我的数据库中存储了访问和刷新令牌。我想用谷歌客户端使用它。我不知道如何在下面的例子中使用它
$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);
我想用访问令牌替换电子邮件和密码。有人帮我怎么做。我在下面试过。但我只得到了例外
捕获异常:预期响应代码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);
捕获异常:令牌升级失败。原因是:
答案 0 :(得分:1)
我认为你正在混淆。
ClientLogin和AuthSub是不同的身份验证API(均已弃用)。
ClientLogin令牌在两周或更早之后到期(请参阅:https://developers.google.com/gdata/faq#clientlogin_expire)。您可以通过调用setClientLoginToken
的setter Zend_Gdata_HttpClient
来使用令牌,只要它不会过期。
$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提供的类)可能更适合您的需求,因为令牌不会过期(AuthSub)或可以刷新(OAuth2)
的AuthSub:
的OAuth2: