gmail api身份验证无法正常工作(javascript)

时间:2017-04-15 14:51:13

标签: javascript gmail-api gapi

以下代码的身份验证失败,我无法弄清楚原因。任何帮助将不胜感激。

首先是相关的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;
}

2 个答案:

答案 0 :(得分:0)

请确保您遵循了有关Authentication using the Google APIs Client Library for JavaScript

的文档

所有对Gmail API的请求必须由经过身份验证的用户授权。 Gmail使用OAuth 2.0 protocol来验证Google帐户并授权访问用户数据。您还可以使用Google+ Sign-in向Google提供&#34;登录&#34;您的应用的身份验证方法。

此外,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);
      }

希望这有帮助!

答案 1 :(得分:0)

经过长时间的努力,我终于决定使用与我的网络托管服务提供商一起打包的电子邮件服务器在服务器端使用php。因此,虽然我无法回答为什么这不起作用,但我建议您使用服务器端发送电子邮件。