當我嘗試連接到使用XOAUTH2機制和服務帳戶Gmail的IMAP服務器,我得到如下回應:Gmail的IMAP和服務帳戶失敗,狀態400
{"status":"400","schemes":"Bearer","scope":"https://mail.google.com/"}
我正在使用的代碼PHP是:
$email = "[email protected]_a_domain.com";
require_once 'GoogleApiClient/Google_Client.php';
$client = new Google_Client();
$client->setUseObjects(true);
$gac = new Google_AssertionCredentials(
"[email protected]",
'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的非域名谷歌用戶(訪問令牌包括「offline_token」)W/O使用服務帳戶的IMAP - 它對我來說工作得很好!
有誰知道我在做什麼錯?
。我只需要json_decode'$ token'並使用'$ token ['access_token']'值,而不是Google返回的整個json字符串。 – maghoth