2017-04-15 27 views
0

以下代碼的身份驗證失敗,我找不到原因。任何幫助,將不勝感激。gmail api身份驗證不起作用(javascript)

首先有關HTML script

<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script> 

現在的javascript:

var clientId = "xxxxxxxx"; 
var apiKey = "xxxxxxxx"; 
var scopes = "https://www.googleapis.com/auth/gmail.send"; 

function handleClientLoad() { 
    gapi.client.setApiKey(apiKey); 
    window.setTimeout(checkAuth, 1); 
} 
function checkAuth() { 
    gapi.auth.authorize({ 
     client_id: clientId, 
     scope: scopes, 
     immediate: true 
    }, handleAuthResult); 
} 
function handleAuthResult(authResult) { 
    if (authResult && !authResult.error) { 
     loadGmailApi(); 
     console.log("gmail authentication passed"); 
    } else { 
     console.log("gmail authentication failed"); 
    } 
} 
function loadGmailApi() { 
    gapi.client.load("gmail", "v1", close); 
} 
function close() { 
    return false; 
} 

回答

0

確保您遵循本文檔有關Authentication using the Google APIs Client Library for JavaScript

所有對Gmail API的請求都必須由經過驗證的用戶授權。 Gmail使用OAuth 2.0 protocol來驗證Google帳戶並授權訪問用戶數據。您還可以使用Google+ Sign-in爲您的應用提供「使用Google登錄」身份驗證方法。

此外,這可能是幫助JavaScript Quickstart

// Authorization scopes required by the API; multiple scopes can be included, separated by spaces. 
     var SCOPES = 'https://www.googleapis.com/auth/gmail.readonly';  
     var authorizeButton = document.getElementById('authorize-button'); 
     var signoutButton = document.getElementById('signout-button'); 

/** 
* On load, called to load the auth2 library and API client library. 
*/ 
     function handleClientLoad() { 
     gapi.load('client:auth2', initClient); 
     } 

希望這有助於!

0

經過這麼長時間的努力,我終於決定在服務器端使用與我的虛擬主機提供商打包的電子郵件服務器使用php。因此,雖然我無法回答爲什麼這不起作用,但我可以推薦使用服務器端發送電子郵件。