2016-08-03 7 views
1

Я новичок в API GMail и пытаюсь выполнить вызов AJAX для получения писем.Ошибка авторизации API AJAX GMAIL

Мой код:

$.ajax({ 
    beforeSend: function (request) 
     { 
      request.setRequestHeader("authorization", "Bearer xxxxxxxxxxxxxxxxx.apps.googleusercontent.com"); 
     }, 
    url: 'https://www.googleapis.com/gmail/v1/users/me/messages?key=xxxxxxxxxxxxxxxxxx', 
    dataType: 'json', 
    cache: false, 
    success: function(data) { 
     // this.setState({Emails: data}); 
     console.log("Mail thread"+data); 
     }.bind(this), 
    error: function(xhr, status, err) { 
     console.error(this.props.url, status, err.toString()); 
    }.bind(this) 
    }); 
}, 

Реакция является 401 ошибка. При рассмотрении запроса, я считаю следующий параметр запроса добавляется к URL запроса послана:

&_=1470236511985 

Так запрос URL выглядит как это.

https://www.googleapis.com/gmail/v1/users/me/messages?key=xxxxxxxxxxxxxxxxxx&_=1470236511985 

Приведенный параметр запроса вызывает ошибку 401 или неправильно использую заголовок авторизации? Как я могу это решить.

Заранее спасибо.

+0

Параметр 'Authorization'-заголовок должен использоваться только тогда, когда вы используете маркер доступа, со значением '«Bearer»+ accessToken'. Если вы используете свой ключ приложения, должно быть достаточно просто использовать параметр запроса 'key', как вы это делаете. – Tholle

+0

Даже удаление заголовка и передача ключа API в качестве параметра запроса приводит к ошибке 401. – user2693135

+0

Получите токен доступа к API-интерфейсу Gmail с [игровой площадки] (https://developers.google.com/oauthplayground/). Используйте этот токен в параметре запроса 'access_token'. Это работает? – Tholle

ответ

1

Для целей тестирования вы можете перейти к OAuth 2.0 Playground и получить токен доступа с областями API Gmail. Просто используйте этот маркер доступа в качестве параметра запроса имени access_token:

var accessToken = 'ya29...'; 

$.ajax({ 
    url: 'https://www.googleapis.com/gmail/v1/users/me/messages?access_token=' + accessToken, 
    dataType: 'json', 
    success: function(data) { 
    console.log(data.messages); 
    } 
} 
+0

Можете ли вы рассказать мне, как получить accesstoken для реального использования? – erdomester

Смежные вопросы