3

当我尝试使用 XOAUTH2 机制和服务帐户连接到 Gmail IMAP 服务器时,我收到以下响应:

{"status":"400","schemes":"Bearer","scope":"https://mail.google.com/"}

我在 PHP 中使用的代码是:

$email = "an_user@of_a_domain.com";

require_once 'GoogleApiClient/Google_Client.php';

$client = new Google_Client();
$client->setUseObjects(true);

$gac = new Google_AssertionCredentials(
    "xxxxxxxxxxx@developer.gserviceaccount.com",
    'https://mail.google.com/',
    file_get_contents("path/to/private/key"),
    'notasecret',
    'http://oauth.net/grant_type/jwt/1.0/bearer',
    $email
);

$client->setApplicationName("Test App");
$client->setAssertionCredentials($gac);

$client::$auth->refreshTokenWithAssertion();
$token = $client::$auth->getAccessToken();

$authStr = base64_encode("user=" . $email . "\1auth=Bearer " . $token . "\1\1");
$response = send_command_to_imap("TAG1 AUTHENTICATE XOAUTH2 " . $authStr);

按照http://www.limilabs.com/blog/oauth2-gmail-imap-service-account的说明,我授权访问邮件。(当然,然后在我的测试域中重新安装了该应用程序)但我仍然失败了。

我可以得到令牌,但无法向 IMAP 进行身份验证。

我还尝试使用服务帐户访问非域谷歌用户的 Gmail IMAP(访问令牌包括“offline_token”) - 它对我来说效果很好!

有谁知道我做错了什么?

4

1 回答 1

-1

自上次 io2014 以来,现在有一种更简单的方式与 Gmail 集成:

https://developers.google.com/gmail/api/overview

于 2014-06-29T20:27:53.203 回答