Google Oauth IMAP每次都要求获得许可

时间:2011-05-05 08:22:09

标签: php oauth authorization google-authentication

我目前正在开发基于网络的邮件服务(它不是一个邮件客户端,但需要解释很多)。然而,在此之前我从未与oauth合作,但似乎是要走的路,我在sampel code上建立了简单的类。但是,示例代码几次都没有提供签名解决方案,或者我错过了它。

所以基本上我的问题是,每当我登录时,我需要再次授权gmail,而我已经看过你曾经做过的其他服务,之后你只需登录并立即重新定向,而不再接受。

编辑:为了澄清,我正在使用oauth登录和IMAP,这是愚蠢的吗?我认为这是最好的方式,因为当我的所有应用程序真正做到的都是通过oauth围绕谷歌应用程序imap时,将OpenID和oauth连接到同一用户似乎很奇怪。我认为tungle.me以这种方式工作,因为我只需要在那里进行授权,下次谷歌立即将我重新定向回来,我希望我的应用程序以这种方式工作。

Edit2:进一步搜索后,似乎授权是第一次然后我应该使用身份验证,因为英语不是我的第一语言我虽然他们的意思相同。所以问题就在于,当已经创建帐户的用户再次登录时,如何通过谷歌进行身份验证,这样我就不需要每次都生成新的令牌。

2 个答案:

答案 0 :(得分:5)

require_once './oauth/apiClient.php';
require_once './oauth/contrib/apiPlusService.php';
$client = new apiClient();
$client->setApplicationName("Name");
$client->setScopes(array('https://www.googleapis.com/auth/plus.me'));
$client->setApprovalPrompt (auto);

...最后一个解决了这个问题,因为默认情况下apiClient将approval_prompt设置为“force”

希望这有助于某人

答案 1 :(得分:0)

使用google API,您可以将1次身份验证Cookie转换为永久身份验证Cookie。如果将这个新的永久身份验证cookie存储在数据库或某个地方,则可以将其用于该特定用户,而不是每次都生成新的身份验证cookie。

这样的事情:

$client = new Zend_Gdata_HttpClient();
$client->setAuthSubPrivateKeyFile('key.pem', null,false);
$uri = Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure, $session)
$gCalToken = Zend_Gdata_AuthSub::getAuthSubSessionToken(trim($uri),$client);