3

當我嘗試連接到使用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 - 它對我來說工作得很好!

有誰知道我在做什麼錯?

+0

。我只需要json_decode'$ token'並使用'$ token ['access_token']'值,而不是Google返回的整個json字符串。 – maghoth

回答

相關問題