1

我目前正在开发一个基于 Web 的邮件服务(它不是一个邮件客户端,但需要解释很多)。但是,在此之前我从未使用过 oauth,但这似乎是要走的路,我的简单类基于sampel code。但是,示例代码没有提供多次登录的解决方案,或者我错过了它。

所以基本上我的问题是,每次我登录时,我都需要再次授权 gmail,而我已经看到其他服务,你这样做一次,然后你只需登录并立即被重定向回来,而无需再次接受。

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

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

4

2 回答 2

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 设置为“强制”

希望这可以帮助某人

于 2012-08-10T15:32:40.057 回答
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);
于 2011-05-05T08:32:55.320 回答